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;@Overrideprotected 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() {@Overridepublic 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() {@Overridepublic void onClick(View arg0) {//朗读EditText里的内容mTextToSpeech.speak(mEditText.getText().toString(), TextToSpeech.QUEUE_FLUSH, null); }});//保存按钮监听saveButton.setOnClickListener(new View.OnClickListener() {@Overridepublic 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); }@Overrideprotected void onDestroy() {super.onDestroy();if (mTextToSpeech!=null) {mTextToSpeech.shutdown();//关闭TTS
        }}private TextWatcher mTextWatcher = new TextWatcher(){@Overridepublic 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); }}@Overridepublic void beforeTextChanged(CharSequence s, int start, int before,int count) {// TODO Auto-generated method stub
            }@Overridepublic 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语音合成 实现中文版相关推荐

  1. android用讯飞实现TTS语音合成 实现中文版

    Android系统从1.6版本开始就支持TTS(Text-To-Speech),即语音合成.但是android系统默认的TTS引擎:Pic TTS不支持中文.所以我们得安装自己的TTS引擎和语音包. ...

  2. Android之讯飞语音-文字转语音(不用另外安装语音合成包apk)遇到的问题

    Android之讯飞语音-文字转语音 <!-- 文章内容 --><div data-note-content="" class="show-conten ...

  3. 讯飞C/C++语音合成基础篇

    首先到讯飞上注册一个帐号(感觉讯飞官网和阿里云官网的差不多) 随后创建一个新应用(Windows平台下) 最后我们要的是Appid如下图所示 下面是讯飞SDK(含说明文档)下载地址: 链接:http: ...

  4. Android使用讯飞SDK开发语音识别及合成小Demo

    自然语言处理现在是比较火的一个领域,也有了很多成熟的应用,像科大讯飞或是百度语音等等这些商业产品的一个优势之一就是比较稳定,适合用来做开发.下面就展示一个根据讯飞SDK文档做出的具有语音识别和语音合成 ...

  5. Android接入讯飞sdk使用,遇到的问题和解决

    最近因为项目原因需要语音识别,Android自带的识别厂商有些会删除谷歌自带的功能,这时候就需要接入第三方,这里列举讯飞接入时遇到的问题: 1:添加Msc.jar包时的问题 添加Msc.jar需要ad ...

  6. Android Studio讯飞语音实现语音转文字

    1.在官网上下载SDK https://www.xfyun.cn/ 2.在lisbs libs里面的两个在add: 3.jinLibs下面: 4.主页面 public class MainActivi ...

  7. Android基于讯飞AIUI的聊天Demo

    基于讯飞AIUI实现一个AI聊天Demo,首先在AIUI开放平台创建应用,做下简单配置,勾选想要的语义技能,记得保存修改 然后选择点开发工具,选择下载对应的SDK 应用信息里有appid,回头下载de ...

  8. Android基于讯飞语音SDK实现语音识别

    一.准备工作 1.你需要android手机应用开发基础 2.科大讯飞语音识别SDK android版 3.科大讯飞语音识别开发API文档 4.android手机 关于科大讯飞SDK及API文档,请到科 ...

  9. android关于讯飞语音包的开发

    这个是一个定制库的例子. 用法及注意事项: 1. 将语音库Aisound.so,放在: libs\armeabi\libAisound.so. 注意:armeabi目录下的库,都要加上lib的前缀,为 ...

  10. android使用讯飞SDK做语音识别

    1.登陆界面http://www.xfyun.cn/,并注册 2.点击右上角的图标,弹出下拉框,选择创建应用 3.按要求填写并提交,并记录该appid 4.然后点击立即开通 5.选择所要添加的业务,并 ...

最新文章

  1. 智能待办,让老师真正的快乐
  2. 《代码敲不队》第五次作业:项目需求分析改进与系统设计
  3. 73 Zabbix 微信告警
  4. 计算机 专业英语 考试,《计算机专业英语》期末考试试卷
  5. 安卓实现定位功能的4种方式
  6. [Java in NetBeans] Lesson 06. Custom classes
  7. SQL Server需要监控哪些计数器 ---指尖流淌
  8. 【高并发】JUC中的Executor框架详解1
  9. MongoDB 查询文档
  10. kubernetes之二:集群环境搭建
  11. [贪心+模拟] zoj 3829 Known Notation
  12. NameNode DataNode
  13. 使用云函数+云调用,四步实现微信支付
  14. C++ 并发指南-atomic原子变量使用struct(二)
  15. 基于ssm java乐轩公司订餐系统
  16. css hover变成手_html实现鼠标悬停变成手型实现方式
  17. 这些独家记忆串成我们的2022
  18. Discuz!论坛各版本通用SEO优化设置教程
  19. [deviceone开发]-纳豆项目源码开源
  20. 计算机应用powerpoint试题,《计算机应用基础》试题二

热门文章

  1. 微信mysql抽奖系统源码_微信互动游戏营销活动抽奖系统 v1.0
  2. 等腰三角形悬臂梁式光纤光栅振动传感器分析
  3. CSS超详细知识点总结2
  4. 【ERP】什么是ERP?MRP和ERP的关系是什么?怎么区分ERP对象·企业的生产类型?(3月29日ERP第一章学习笔记)
  5. python图片灰度化处理
  6. Scrapy 官方文档中文版
  7. 如何把TS视频文件转换为MP4格式?
  8. 计算椭圆运动轨迹的算法
  9. 技术支持团队应该是一个斜杠的团队
  10. Redis缓存雪崩,如何解决?