因项目需要中文朗读推送信息,做了一个简单调查。现站在应用开发者角度介绍一下android系统下语音合成的开发配置流程:
1)核心代码
android自带api,引入包import android.speech.tts.TextToSpeech;
private TextToSpeech tts;
//The constructor for the TextToSpeech class, using the default TTS engine. This will also initialize the associated TextToSpeech engine if it isn't already //running,即初始化一个语音合成类,使用默认TTS合成引擎。若引擎未实例化则实例化引擎
tts = new TextToSpeech(this, new TextToSpeech.OnInitListener() {
//实例化语音合成类时回调该方法
@Override
public void onInit(int status) {
// TODO Auto-generated method stub
if (status == TextToSpeech.SUCCESS)
{
int result = tts.setLanguage(Locale.CHINA);
if (result == TextToSpeech.LANG_MISSING_DATA
|| result == TextToSpeech.LANG_NOT_SUPPORTED)
{
Toast.makeText(getBaseContext(), "Language is not available.",
Toast.LENGTH_SHORT).show();
}
}
}
});
//朗读输入的字符串str
tts.speak(str, TextToSpeech.QUEUE_FLUSH, null);
2)引擎设置
现有好多手机自带支持中文语音合成的引擎,但早些默认tts(不支持中文)。若手机或设备无自带的支持中文的引擎推荐下载科大讯飞的语音引擎(同事加本人亲测),不特别生硬,基本可以达到要求(不过软件兼容性不是很好,有一些机型无法下载的情况)。
无论使用何种引擎,开发者只需调用tts即可,底层代码已被封装好。下面介绍一下如何在手机中选择引擎:
设置-->语言和输入法-->文字转语音(TTS)输出
有些手机在辅助功能或者别的里面