android用讯飞实现TTS语音合成 实现中文版
Android系统从1.6版本开始就支持TTS(Text-To-Speech),即语音合成。但是android系统默认的TTS引擎:Pic TTS不支持中文。所以我们得安装自己的TTS引擎和语音包。
在项目中,一开始用的是手说TTS,免费版的,感觉声音很不僵硬,不自然,不连贯。付费版的还要钱激活,如果不激活,限制每次只能度5个字,而且比免费版也好不了多少。最后采用了讯飞语音TTS1.0,发音连贯自然,个人感觉很不错了,以后就用它。
介绍下使用方法:
1.首先下载讯飞的语音包apk,以及语音引擎apk,安装在手机上。
链接:http://pan.baidu.com/s/1mgL7elU 提取码:oelh
2.进入系统设置-->语音输入输出设置-->勾选“讯飞语音合成" , 默认引擎“讯飞语音合成”, 语言“中文"。

调用android自带的TTS api,就可实现中文版语音合成。
package com.example.testxunfeitts; import java.util.Locale; import android.app.Activity;
import android.os.Bundle;
import android.speech.tts.TextToSpeech;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Toast; public class MainActivity extends Activity { private EditText mEditText = null;
private Button readButton = null;
private Button saveButton = null;
private CheckBox mCheckBox = null;
private TextToSpeech mTextToSpeech=null; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); mEditText = (EditText)this.findViewById(R.id.edittext);
readButton = (Button)this.findViewById(R.id.rbutton);
saveButton = (Button)this.findViewById(R.id.sbutton);
mCheckBox = (CheckBox)this.findViewById(R.id.checkbox); //实例并初始化TTS对象
mTextToSpeech=new TextToSpeech(this, new TextToSpeech.OnInitListener() { @Override
public void onInit(int status) {
if (status==TextToSpeech.SUCCESS) {
//设置朗读语言
int supported=mTextToSpeech.setLanguage(Locale.US);
if ((supported!=TextToSpeech.LANG_AVAILABLE)&&(supported!=TextToSpeech.LANG_COUNTRY_AVAILABLE)) {
Toast.makeText(MainActivity.this, "不支持当前语言!", 1).show();
}
} }
}); //朗读监听按钮
readButton.setOnClickListener(new View.OnClickListener() { @Override
public void onClick(View arg0) {
//朗读EditText里的内容
mTextToSpeech.speak(mEditText.getText().toString(), TextToSpeech.QUEUE_FLUSH, null);
}
}); //保存按钮监听
saveButton.setOnClickListener(new View.OnClickListener() { @Override
public void onClick(View arg0) {
//将EditText里的内容保存为语音文件
int r = mTextToSpeech.synthesizeToFile(mEditText.getText().toString(), null, "/mnt/sdcard/speak.wav");
if (r==TextToSpeech.SUCCESS) {
Toast.makeText(MainActivity.this, "保存成功!", 1).show();
}
}
}); //EditText内容变化监听
mEditText.addTextChangedListener(mTextWatcher);
} @Override
protected void onDestroy() {
super.onDestroy(); if (mTextToSpeech!=null) {
mTextToSpeech.shutdown();//关闭TTS
}
} private TextWatcher mTextWatcher = new TextWatcher(){ @Override
public void afterTextChanged(Editable s) {
//如果是边写边读
if(mCheckBox.isChecked()&&(s.length()!=0)){
//获得EditText的所有内容
String t = s.toString();
mTextToSpeech.speak(t.substring(s.length()-1), TextToSpeech.QUEUE_FLUSH, null);
}
} @Override
public void beforeTextChanged(CharSequence s, int start, int before,
int count) {
// TODO Auto-generated method stub } @Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
// TODO Auto-generated method stub }
};
}
中文语音合成(TTS)可以分为两类:
1.跟系统接口吻合的
跟系统接口吻合的,都是把TTS引擎跟语音包数据分开。像系统默认的Pico TTS,SVOX,科大讯飞等就是这样的。
优点:可以通过系统提供的接口去使用TTS功能,以便于做多国语言的扩展。
缺点:设置语音朗读的角色和设置语速的快慢就得通过系统的接口去设置。
2.不与系统接口吻合的
不与系统接口吻合的,都是会把引擎和语音包打包成一个apk,然后安装完之后,通过指定的接口去调用其所提供的中文语音合成功能。
除了这两类方法之外,还有一些是直接把TTS功能做成共享库so文件,然后通过NDK去调用TTS的功能。这一种就比较好,因为不需要额外的再安装TTS引擎跟语音包,并且可以直接在应用里面设置朗读人是男声还是女声,语速等。想旧版的科大讯飞就是以这种形式出现的,比较有代表的应用是“听说”或者"vBook"。
分析下市面上有名的中文语音合成TTS各自的差异:
一、跟系统接口吻合的。
1.讯飞语音TTS1.0
这个原来讯飞是没有这个与系统接口吻合的TTS的,原来是以动态库的形式的,最近才以这种apk的形式华丽登场,合成的效果清晰流畅,不生硬,英文也读得挺好的,听起来很舒服。
2.SVOX
这个也做得很强大,N多的语言支持,中文不仅支持普通话,还支持广东话!不过有一些感觉吐字不是很清晰,听感不是很好,不过还好,因为大部分是可以听得懂的,下载地址:http://www.coolapk.com/apk-4192-com.svox.classic.langpack.cmn_chn_fem/
3.三星TTS
支持韩文,中文跟英文,每一字吐字还比较清晰,但是连起来的时候,不是很顺畅。
安装apk,然后把SMT文件夹整个拷贝到SD卡的根目录
下载地址是:http://115.com/file/e7z2iliv
二、是以独立的apk形式存在的主要在下面的两种
1.捷通华声
捷通华声也是中文语音做得比较好的,跟科大讯飞有得一拼。它的调用方法是使用java的反射机制来使用已经安装的TTS类。
捷通华声TTS语音包下载地址:http://www.yingyong.so/app/3/1917.htm
2.手说TTS
手说也是独立安装的一个TTS引擎,目前好像只支持中文语言。它接口公开,语音质量还行。本人做过手说TTS的,感觉声音很不僵硬,不自然,连贯。
它的使用方法在例程里面有很详细的介绍,手说的主页:http://shoushuo.com/index.html
对于第一种作为切合系统接口的TTS中文引擎,安装之后,需要安装语言包,然后还得简单的设置一下才可以使用,方法如下:
设置-》语音输入与输出-》文字转语音设置,把对应的TTS引擎后面的勾,勾上,再在“默认引擎”里面设置你所需要的TTS,然后就可以聆听示例了。
而对于第二种,一般都会带有一个activity可以聆听示例的。
推荐使用科大讯飞的中文TTS,跟捷通华声的音色都比较自然,应该是目前所有的中文TTS里面最好的了。
如果此文对您有帮助,微信打赏我一下吧~

android用讯飞实现TTS语音合成 实现中文版的更多相关文章
- 讯飞语音JavaWeb语音合成解决方案
在线语音合成 将文字信息转化为声音信息,给应用配上"嘴巴".我们提供了众多极具特色的发音人(音库)供您选择.其合成音在音色.自然度等方面的表现均接近甚至超过了人声.这种语音合成体验 ...
- android 使用讯飞人脸识别api报错:java.lang.UnsatisfiedLinkError
1.在做一个人脸识别的项目,使用的是讯飞的api,编辑器为AS2.0,运行时报如下错误: FATAL EXCEPTION: main Process: com.adm ...
- Android 讯飞语音之语音合成(在线有声朗读)
原文:http://www.cnblogs.com/scetopcsa/p/3845427.html 在线语音合成的使用方法: 首先下载相关的sdk,这个网址里有多种版本,我选择的Android. h ...
- android 开发 讯飞语音唤醒功能
场景:进入程序后处于语音唤醒状态,当说到某个关键词的时候打开某个子界面(如:语音识别界面) 技术要点: 1. // 设置唤醒一直保持,直到调用stopListening,传入0则完成一次唤醒后,会话立 ...
- Android集成讯飞语音、百度语音、阿里语音识别
项目实践:https://blog.csdn.net/Jsagacity/article/details/80094164 demo下载地址:https://fir.im/jy28 demo源码:ht ...
- 初探机器学习之使用讯飞TTS服务实现在线语音合成
最近在调研使用各个云平台提供的AI服务,有个语音合成的需求因此就使用了一下科大讯飞的TTS服务,也用.NET Core写了一个小示例,下面就是这个小示例及其相关背景知识的介绍. 一.什么是语音合成(T ...
- Android Studio快速集成讯飞SDK实现文字朗读功能
今天,我们来学习一下怎么在Android Studio快速集成讯飞SDK实现文字朗读功能,先看一下效果图: 第一步 :了解TTS语音服务 TTS的全称为Text To Speech,即“从文本到语音” ...
- Android自带语音播报+讯飞语音播报封装(直接用)
一.Android自带的语音播报 1.查看是否支持中文,在测试的设备中打开‘设置’ -->找到 '语言和输入法'-->查看语音选项,是否支持中文,默认仅支持英文. 使用如下: public ...
- Android讯飞语音云语音听写学习
讯飞语音云语音听写学习 这几天两个舍友都买了iPhone 6S,玩起了"Hey, Siri",我依旧对我的Nexus 5喊着"OK,Google" ...
随机推荐
- 读取Excel文件
绝对路径String filepath= "E:\\a.xls"; public static String getExcelData(File file,String lang, ...
- list-style
list-style: inside url(" "); 默认li的点在父级div框的外面,在li上加样式list-style-position: inside;可以使点在框内:点 ...
- ZabbixCPU温度监视-windows2008R2
1, speed-fan安装 SpeedFan - Access temperature sensor in your computer / http://www.almico.com/speedfa ...
- distinct order by 排序问题
使用类似“SELECT DISTINCT `col` FROM `tb_name` ORDER BY `time` DESC”这样的sql语句时,会遇到排序问题. 以上面的sql语句分析:order ...
- Java学习笔记:控制反转
控制反转(Ioc)模式(又称DI:Dependency Injection)就是Inversion of Control,控制反转.在Java开发中,IoC意味着将你设计好的类交给系统去控制,而不是在 ...
- 【TextBox】重写右键菜单
参考资料 http://bbs.csdn.net/topics/390324356 http://www.cnblogs.com/ycxy/archive/2012/10/09/2716852.htm ...
- 微软Connect教程系列--自动生成增删改查页面工具介绍(二)
本章课程描述了vs2015的三个特点,其中主要将描述在vs2015下面,使用命令自动生成增删改查界面,具体如下: 1.web.config文件不在存在,用config.json替代,以适应支撑vs的插 ...
- Wix 安装部署教程(九) --用WPF做安装界面
经常安装PC端的应用,特别是重装系统之后,大致分为两类.一类像QQ,搜狗输入法这样的.分三步走的:第一个页面可以自定义安装路径和软件许可.第二个页面显示安装进度条,第三个页面推荐其他应用.先不管人家怎 ...
- JavaScript思维导图—DOM基本操作
JavaScript思维导图-来自@王子墨http://julying.com/blog/the-features-of-javascript-language-summary-maps/ DOM基本 ...
- Java序列化格式详解
RPC的世界,由于涉及到进程间网络远程通信,不可避免的需要将信息序列化后在网络间传送,序列化有两大流派: 文本和二进制. 文本序列化 序列化的实现有很多方式,在异构系统中最常用的就是定义成人类可读的文 ...