android实现语音合成
坑爹的語(yǔ)音合成,wp8只需要下載個(gè)語(yǔ)言包就可以實(shí)現(xiàn)中文的語(yǔ)音合成,但android只支持幾種(英文、法語(yǔ)、德語(yǔ)等幾種拉丁語(yǔ)系)。找了幾個(gè)開(kāi)源的合成引擎都不是很滿意,退而求其次選擇語(yǔ)音合成服務(wù)(訊飛),實(shí)現(xiàn)方式:
1、將SpeechApi.jar拷到工程的libs下,
2、
private static String TAG = "TTSTest";
private SpeechSynthesizer mTts;
private Toast mToast;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 初始化合成對(duì)象
mTts = new SpeechSynthesizer(this, mTtsInitListener);
mToast = Toast.makeText(this, "", Toast.LENGTH_LONG);
Button button = (Button) findViewById(R.id.button1);
button.setOnClickListener(new OnClickListener() {
String s = ((EditText) findViewById(R.id.editText1)).getText()
.toString();
@Override
public void onClick(View arg0) {
mTts.setParameter(SpeechConstant.ENGINE_TYPE, "cloud");
// mTts.setParameter(SpeechSynthesizer.VOICE_NAME, "vixk");
// mTts.setParameter(SpeechConstant.ENGINE_TYPE, "local");
mTts.setParameter(SpeechSynthesizer.VOICE_NAME, "xiaoyan");
mTts.setParameter(SpeechSynthesizer.SPEED, "50");
mTts.setParameter(SpeechSynthesizer.PITCH, "50");
int code = mTts.startSpeaking(s, mTtsListener);
if (code != 0) {
showTip("start speak error : " + code);
} else
showTip("start speak success.");
}
});
}
暫時(shí)選擇這種辦法把,但是這種有幾個(gè)問(wèn)題。一是語(yǔ)音要從服務(wù)器端傳回的音頻流,流量消耗比較大(wp8是本地合成),二是網(wǎng)絡(luò)不好的情況下會(huì)比較慢。
轉(zhuǎn)載于:https://blog.51cto.com/fengxiaoxiao/1250375
總結(jié)
以上是生活随笔為你收集整理的android实现语音合成的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Ladda – 把加载提示效果集成到按钮
- 下一篇: android学习笔记(入门篇)