android源代码文本转语音api,Android 文本转语音TextToSpeech (TTS)-程序员宅基地

技术标签: android源代码文本转语音api  

Android 系统里内置了PicoTTS,遗憾的是不支持中文。我们可以安装讯飞语记TTS,中文就不是问题了。

调用起来简单方便,直接使用tts对象调用speak即可。其中speak函数的参数如下:

public int speak(final String text, final int queueMode, final HashMap params) {

return runAction(new Action()

text 需要转成语音的文字

queueMode 队列方式:

QUEUE_ADD:播放完之前的语音任务后才播报本次内容

QUEUE_FLUSH:丢弃之前的播报任务,立即播报本次内容

params 设置TTS参数,可以是null。

KEY_PARAM_STREAM:使用哪个音频通道,可以是:STREAM_MUSIC、STREAM_NOTIFICATION、STREAM_RING等

KEY_PARAM_VOLUME:音量大小,0-1f

返回值:

/**

* Denotes a successful operation.

*/

public static final int SUCCESS = 0;

/**

* Denotes a generic operation failure.

*/

public static final int ERROR = -1;

注意使用shutdown()及时释放不用的TTS资源。

以下是Demo源码:

package com.zms.ttsdemo;

import java.util.Locale;

import android.app.Activity;

import android.os.Bundle;

import android.speech.tts.TextToSpeech;

import android.speech.tts.TextToSpeech.OnInitListener;

import android.view.View;

import android.widget.Button;

public class MainActivity extends Activity {

private TextToSpeech tts;

private Button btnSpeak;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

btnSpeak = (Button) findViewById(R.id.btnSpeak);

btnSpeak.setOnClickListener(new MyOnClickListener());

tts = new TextToSpeech(this, new MyOnInitialListener());

}

class MyOnInitialListener implements OnInitListener {

@Override

public void onInit(int status) {

// tts.setEngineByPackageName("com.iflytek.vflynote");

tts.setLanguage(Locale.CHINESE);

}

}

class MyOnClickListener implements View.OnClickListener {

@Override

public void onClick(View v) {

switch (v.getId()) {

case R.id.btnSpeak:

tts.speak("你好,我是TTS", TextToSpeech.QUEUE_FLUSH, null);

break;

default:

break;

}

}

}

@Override

protected void onDestroy() {

super.onDestroy();

if (tts != null) { // 关闭TTS引擎

tts.shutdown();

}

}

}

相关源码:

frameworks\base\core\java\android\speech\tts\TextToSpeech.java

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_39955233/article/details/117467738

智能推荐

Matlab画图让坐标轴单位长度相同_matlab坐标轴长度相同-程序员宅基地

文章浏览阅读2.7w次,点赞14次,收藏26次。让坐标轴单位长度相同今天画开封铁塔的模拟图,代码如下:clcclearclose allload A_1986c1 = 1:8:104; c2 = 8:8:104; C = [c1;c2]';x = A_1986(:,1);y = A_1986(:,2);z = A_1986(:,3);x_center = center_86(:,1);y_center = center_86(:..._matlab坐标轴长度相同

Python随笔:函数(经典案例18例)_python函数经典例程-程序员宅基地

文章浏览阅读6.8k次,点赞21次,收藏70次。1.斐波那契##编写斐波那契数列的函数并调用def fib(n):##n是形参 a,b =1,1 while a<n: print(a,end=' ') a,b=b,a+b print(a,b)fib(1000)_python函数经典例程

力扣刷题记录-回溯算法相关题目_回溯法 n叉树-程序员宅基地

文章浏览阅读323次。记录了力扣可以用到回溯思想的经典题目,每道题目都有详细的注释方便理解_回溯法 n叉树

HTML-零基础学习_标记语言使用一套 来描述网页-程序员宅基地

文章浏览阅读265次。HTML什么是HTML? HTML 是用来描述网页的一种语言。 HTML 指的是超文本标记语言: HyperText Markup Language HTML 不是一种编程语言,而是一种标记语言 标记语言是一套标记标签 (markup tag) HTML 使用标记标签来描述网页 HTML 文档包含了HTML 标签及文本内容 HTML文档也叫做 web 页面 HTML 标记标签通常被称为 HTML 标签 (HTML tag)。 HTML 标签是由尖括号包围的关键词,..._标记语言使用一套 来描述网页

EndNote x9完全卸载及安装,报错解决_endnote安装不了,老说没卸载干净-程序员宅基地

文章浏览阅读4.1w次,点赞8次,收藏45次。EndNote x9完全卸载及安装,报错解决一、 windows下完全卸载EndNote x91、控制面板卸载该软件,不用教吧2、删除不干净就是你的配置文件和注册表没有删除干净打开C:\Users\XX\App Data\Roaming,XX是当前Windows用户的用户名。找不到APP Data?!一是你的系统是XP,那就是C:\Documents and Settings\XX\Application Data。二是未显示隐藏文件。删除该文件夹下的「EndNote」子文件夹_endnote安装不了,老说没卸载干净

[免杀] Delphi 内嵌ASM获取kernel32.dll的模块句柄 XP/Vista/WIN7-程序员宅基地

文章浏览阅读111次。为什么80%的码农都做不了架构师?>>> ..._delphi 获取模块下所有加载的dll 句柄

随便推点

Redis工具列表_redis-cerberus-程序员宅基地

文章浏览阅读1.4k次。Redis tool listHere is a Redis tool list. I hope you will find one or two of them that you’d like to try out.Table of ContentsRedis ClusterRedis VarietyRedis ProxyRedis ModuleRedis ClientRedi..._redis-cerberus

php奇偶行不同颜色,CSS_CSS3 :nth-child()伪类选择器实现奇偶行显示不同样式,css3的强大,让人惊叹,人们在 - phpStudy...-程序员宅基地

文章浏览阅读229次。CSS3 :nth-child()伪类选择器实现奇偶行显示不同样式css3的强大,让人惊叹,人们在惊喜之余,又不得不为其艰难的道路感到可惜:好的标准只有得到行业浏览器的良好支持才算得上“标准”。CSS3标 准已提出数年,但是目前能实现她的浏览器并不多,虽然部分浏览器能实现部分规范,但这又有什么用呢?面对更多的兼容性问题,CSSer们只有望洋轻叹。虽 然如此,但有前瞻性的我们,又怎能停步不前呢?今天..._:nth-child实现判断奇偶列表不同颜色

WP ListBox 遍历DataTemplate(获取所有控件)_wpf 获取listbox.datatemplate子控件-程序员宅基地

文章浏览阅读657次。项目需求,ListBox选中切换其选中项的Image控件的图片,其它每项ListBoxItem的相应Image控件都设置为未选中图片.解决方案适用于ComboBox等:1.先看xaml文件:<DataTemplate x:Name="BusTemplate" x:Key="LBDataTemplate"> <StackPanel> <StackPanel Orientation="Horizontal" Margin="10">_wpf 获取listbox.datatemplate子控件

在SQL Server中如何关于修改自增型主键的初始值_sqlserver更新表的自增初始值-程序员宅基地

文章浏览阅读5k次。在sql server中定义了一个自增型主键。 在添加了10条数据之后, 虽然把这10条数据删除了,但是再增加一条数据,那他的值也是11。 如何修改他成为1呢?truncate table 表名 再新增后就是从1开始了那如果是原先有15条,删除5条后再添加还是16,想要再添加时变成11呢DBCC CHECKIDENT (Relation, R_sqlserver更新表的自增初始值

java实现fcfs_模拟实现FCFS(先来先服务)算法-程序员宅基地

文章浏览阅读485次。模拟实现FCFS(先来先服务)算法FCFS类(先来先服务算法类):package com.fjnu.JavaSubject03;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.Fil..._模拟实现先来先服务算法

Hbuilder快捷键教程_为什么hbuilder 填h8会出现head-程序员宅基地

文章浏览阅读2k次。/*注:本教程针对HBuilder5.0.0,制作日期2014-12-31*/创建HTML结构: h 8 (敲h激活代码块列表,按8选择第8个项目,即HTML代码块,或者敲h t Enter)中途换行: 'Ctrl+Enter'设置charset: m e 6 Enter引用外部js: s 2 Enter 'Ctrl+Enter'创建js区块: s Enter创建函数: f_为什么hbuilder 填h8会出现head

推荐文章

热门文章

相关标签