使用科大訊飛語(yǔ)音SDK實(shí)現(xiàn)文字在線(xiàn)合成語(yǔ)音
最近需要使用到語(yǔ)音播報(bào)的功能,在百度七武器百度語(yǔ)音和科大訊飛的語(yǔ)音當(dāng)中考慮到準(zhǔn)確性和專(zhuān)業(yè)性,選擇了科大訊飛。科大訊飛所提供的android開(kāi)發(fā)sdk有兩種一種是集成了自身產(chǎn)品語(yǔ)音+的sdk,功能比較強(qiáng)大但是會(huì)初始化語(yǔ)音服務(wù)模塊;另一種是純開(kāi)發(fā)sdk不集成產(chǎn)品只需要導(dǎo)入相應(yīng)jar包就可以使用??紤]到只用到了語(yǔ)音合成的技術(shù)所以選擇了第二種sdk。
具體代碼如下所示:
private SpeechSynthesizer mTts; private int isSpeaking = 0; mTts= SpeechSynthesizer.createSynthesizer(this, null); /*
* 開(kāi)始合成
*
* @param view
*/
public void start() {
mTts.setParameter(SpeechConstant.VOICE_NAME, "xiaoyan");
mTts.setParameter(SpeechConstant.SPEED, "50");//設(shè)置語(yǔ)速
mTts.setParameter(SpeechConstant.VOLUME, "80");//設(shè)置音量,范圍 0~100
mTts.setParameter(SpeechConstant.ENGINE_TYPE, SpeechConstant.TYPE_CLOUD); //設(shè)置云端
mTts.startSpeaking(search_word_content.getText().toString().trim(), mSynListener);
}
//合成監(jiān)聽(tīng)器
private SynthesizerListener mSynListener = new SynthesizerListener(){
//緩沖進(jìn)度回調(diào)
//percent為緩沖進(jìn)度0~100,beginPos為緩沖音頻在文本中開(kāi)始位置,endPos表示緩沖音頻在
//文本中結(jié)束位置,info為附加信息。
@Override
public void onBufferProgress(int arg0, int arg1, int arg2, String arg3) {
// TODO Auto-generated method stub
}
//會(huì)話(huà)結(jié)束回調(diào)接口,沒(méi)有錯(cuò)誤時(shí),error為null
@Override
public void onCompleted(SpeechError arg0) {
// TODO Auto-generated method stub
}
//會(huì)話(huà)事件回調(diào)接口
@Override
public void onEvent(int arg0, int arg1, int arg2, Bundle arg3) {
// TODO Auto-generated method stub
}
//開(kāi)始播放
@Override
public void onSpeakBegin() {
// TODO Auto-generated method stub
}
//暫停播放
@Override
public void onSpeakPaused() {
// TODO Auto-generated method stub
}
//播放進(jìn)度回調(diào)
//percent為播放進(jìn)度0~100,beginPos為播放音頻在文本中開(kāi)始位置,endPos表示播放音頻在文
//本中結(jié)束位置.
@Override
public void onSpeakProgress(int arg0, int arg1, int arg2) {
// TODO Auto-generated method stub
}
//恢復(fù)播放回調(diào)接口
@Override
public void onSpeakResumed() {
// TODO Auto-generated method stub
}
};
if (isSpeaking == 0) {
start();
gif_no.setVisibility(View.INVISIBLE);
gif.setVisibility(View.VISIBLE);
isSpeaking = 1;
} else if (isSpeaking == 1) {
// 暫停播放
mTts.pauseSpeaking();
gif_no.setVisibility(View.VISIBLE);
gif.setVisibility(View.INVISIBLE);
isSpeaking = 2;
} else if (isSpeaking == 2) {
// 繼續(xù)播放
//System.out.println("..........");
mTts.resumeSpeaking();
isSpeaking = 1;
gif_no.setVisibility(View.INVISIBLE);
gif.setVisibility(View.VISIBLE);
}
// 取消合成
mTts.stopSpeaking();
isSpeaking = 0;
總結(jié), 開(kāi)始初始化,start方法里面設(shè)置參數(shù),再根據(jù)需要調(diào)用停止和繼續(xù)方法,假如換了文本調(diào)用取消合成方法,重新start方法
以上內(nèi)容是小編給大家分享的使用科大訊飛語(yǔ)音SDK實(shí)現(xiàn)文字在線(xiàn)合成語(yǔ)音的全部敘述,希望大家喜歡。
相關(guān)文章
Android 谷歌推薦的VR實(shí)現(xiàn)方式(分享)
下面小編就為大家分享一篇Android 谷歌推薦的VR實(shí)現(xiàn)方式。具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-01-01
Android4.2中全屏或者取消標(biāo)題欄的方法總結(jié)
有的時(shí)候我們會(huì)看到,會(huì)先出現(xiàn)標(biāo)題欄,然后再消失,因?yàn)槲覀冎皇窃赼ctivity的oncreate方法中定義的,其他實(shí)現(xiàn)方法如下,感興趣的朋友可以了解下哈2013-06-06
Kotlin 中范圍操作符的使用示例代碼(范圍操作符不同用法)
Kotlin中的范圍操作符(in、step、downTo、until)在Android開(kāi)發(fā)中非常實(shí)用,通過(guò)這些操作符,可以簡(jiǎn)潔地遍歷整數(shù)范圍,實(shí)現(xiàn)各種遍歷需求,提高代碼的可讀性和可維護(hù)性,本文介紹Kotlin 中范圍操作符的使用示例,感興趣的朋友一起看看吧2025-03-03
Android用StaticLayout實(shí)現(xiàn)文字轉(zhuǎn)化為圖片效果(類(lèi)似長(zhǎng)微博發(fā)送)
這篇文章主要給大家介紹了關(guān)于Android利用StaticLayout實(shí)現(xiàn)文字轉(zhuǎn)化為圖片效果,實(shí)現(xiàn)的效果類(lèi)似我們常見(jiàn)的長(zhǎng)微博效果,文中給出了詳細(xì)的示例代碼供大家參考學(xué)習(xí),需要的朋友們下面來(lái)一起看看吧。2017-08-08
一行代碼教你解決Scrollview和TextInput焦點(diǎn)獲取問(wèn)題
這篇文章主要為大家介紹了一行代碼教你解決Scrollview和TextInput焦點(diǎn)獲取問(wèn)題,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12
Android自定義TimeButton實(shí)現(xiàn)倒計(jì)時(shí)按鈕
這篇文章主要為大家詳細(xì)介紹了Android自定義TimeButton實(shí)現(xiàn)倒計(jì)時(shí)按鈕,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-12-12
5個(gè)Android開(kāi)發(fā)中比較常見(jiàn)的內(nèi)存泄漏問(wèn)題及解決辦法
本文主要介紹了5個(gè)Android開(kāi)發(fā)中比較常見(jiàn)的內(nèi)存泄漏問(wèn)題及解決辦法,具有很好的參考價(jià)值,下面跟著小編一起來(lái)看下吧2017-02-02
根據(jù)USER-AGENT判斷手機(jī)類(lèi)型并跳轉(zhuǎn)到相應(yīng)的app下載頁(yè)面
檢測(cè)瀏覽器的USER-AGENT,然后根據(jù)正則表達(dá)式來(lái)確定客戶(hù)端類(lèi)型,并跳轉(zhuǎn)到相應(yīng)的app下載頁(yè)面,這個(gè)方法還是比較實(shí)用的,大家可以看看2014-09-09
Android 性能優(yōu)化系列之bitmap圖片優(yōu)化
在日常開(kāi)發(fā)的APP,大部分時(shí)候需要想用戶(hù)展示圖片信息,圖片最終對(duì)應(yīng)Android中的Bitmap對(duì)象。而對(duì)于APP端來(lái)說(shuō)Bitmap又是一個(gè)比較麻煩的問(wèn)題,主要表現(xiàn)在Bitmap是非常占用內(nèi)存的對(duì)象,處理不當(dāng)將導(dǎo)致APP運(yùn)行卡頓甚至出現(xiàn)OOM2021-11-11

