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

