一、介绍
目录
一、介绍
二、配置
三、使用
四、权限
五、补充
目前国内Android系统自带语音引擎基本上都是Pico TTS,Pico TTS不支持中文转语音播报。因为项目需要播放中文,引入科大讯飞引擎3.0.apk。
二、配置
下载好科大讯飞语音引擎3.0.apk(若是下载小爱,小度等其他引擎也可以),安装成功之后,进入系统设置—>语言输入法设置—>文字转语音(TTS)输出—>选择科大讯飞语音引擎(选择你下载的引擎)。
三、使用
代码很简单,注释很详细,废话不多说,直接上工具类。
package com.welbell.temperature.type.ui;import android.content.Context;
import android.speech.tts.TextToSpeech;
import android.util.Log;import java.util.Locale;public class VoiceAnnouncements implements TextToSpeech.OnInitListener {private static final String TAG = VoiceAnnouncements.class.getName();public static VoiceAnnouncements mVoiceAnnouncements;private TextToSpeech mTextToSpeech;public static VoiceAnnouncements getInstance() {synchronized (VoiceAnnouncements.class) {if (mVoiceAnnouncements == null) {mVoiceAnnouncements = new VoiceAnnouncements();}}return mVoiceAnnouncements;}public void init(Context context) {mTextToSpeech = new TextToSpeech(context, this);}/*** 设置语音播放参数(设置-1将不起作用)** @param pitch 音调* @param speechRate 语速*/public void setParameter(float pitch, float speechRate) {if (mTextToSpeech == null) {return;}if (pitch != -1)//设置音调mTextToSpeech.setPitch(pitch);if (speechRate != -1)//设置语速,1.0为正常语速mTextToSpeech.setSpeechRate(speechRate);}/*** 设置播放内容* 播放语音前需要等初始化成功之后 * @param isCover 是否覆盖式播放* @param text 播放的内容*/public void speak(boolean isCover,String text){if (isCover){mTextToSpeech.stop();}mTextToSpeech.speak(text, TextToSpeech.QUEUE_ADD, null);}/*** 回调函数* @param status*/@Overridepublic void onInit(int status) {//设置朗读语言int supported = mTextToSpeech.setLanguage(Locale.SIMPLIFIED_CHINESE);if ((supported != TextToSpeech.LANG_AVAILABLE) && (supported != TextToSpeech.LANG_COUNTRY_AVAILABLE)) {Log.e(TAG, "onInit: 不支持当前语言");}}
}
四、权限
TTS需要使用文件操作权限
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <!-- 外部存储读权限 --><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!-- 外部存储写权限 -->
五、补充
第三方引擎APK,需要通过用户手动设置为默认TTS输出,否则不能使用。目前除了改framework层以外,Android上层没有办法修改第三方APK为默认的输出TTS应用。