技术标签: 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
文章浏览阅读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坐标轴长度相同
文章浏览阅读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函数经典例程
文章浏览阅读323次。记录了力扣可以用到回溯思想的经典题目,每道题目都有详细的注释方便理解_回溯法 n叉树
文章浏览阅读265次。HTML什么是HTML? HTML 是用来描述网页的一种语言。 HTML 指的是超文本标记语言: HyperText Markup Language HTML 不是一种编程语言,而是一种标记语言 标记语言是一套标记标签 (markup tag) HTML 使用标记标签来描述网页 HTML 文档包含了HTML 标签及文本内容 HTML文档也叫做 web 页面 HTML 标记标签通常被称为 HTML 标签 (HTML tag)。 HTML 标签是由尖括号包围的关键词,..._标记语言使用一套 来描述网页
文章浏览阅读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安装不了,老说没卸载干净
文章浏览阅读111次。为什么80%的码农都做不了架构师?>>> ..._delphi 获取模块下所有加载的dll 句柄
文章浏览阅读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
文章浏览阅读229次。CSS3 :nth-child()伪类选择器实现奇偶行显示不同样式css3的强大,让人惊叹,人们在惊喜之余,又不得不为其艰难的道路感到可惜:好的标准只有得到行业浏览器的良好支持才算得上“标准”。CSS3标 准已提出数年,但是目前能实现她的浏览器并不多,虽然部分浏览器能实现部分规范,但这又有什么用呢?面对更多的兼容性问题,CSSer们只有望洋轻叹。虽 然如此,但有前瞻性的我们,又怎能停步不前呢?今天..._:nth-child实现判断奇偶列表不同颜色
文章浏览阅读657次。项目需求,ListBox选中切换其选中项的Image控件的图片,其它每项ListBoxItem的相应Image控件都设置为未选中图片.解决方案适用于ComboBox等:1.先看xaml文件:<DataTemplate x:Name="BusTemplate" x:Key="LBDataTemplate"> <StackPanel> <StackPanel Orientation="Horizontal" Margin="10">_wpf 获取listbox.datatemplate子控件
文章浏览阅读5k次。在sql server中定义了一个自增型主键。 在添加了10条数据之后, 虽然把这10条数据删除了,但是再增加一条数据,那他的值也是11。 如何修改他成为1呢?truncate table 表名 再新增后就是从1开始了那如果是原先有15条,删除5条后再添加还是16,想要再添加时变成11呢DBCC CHECKIDENT (Relation, R_sqlserver更新表的自增初始值
文章浏览阅读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..._模拟实现先来先服务算法
文章浏览阅读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