百度语音合成(TTS)SDK使用方法

语音合成是实现人机语音交互,建立一个有听和讲能力的交互系统所必需的关键技术。
这篇文章将介绍如何使用 百度 Android语音合成SDK。
与语音识别SDK类似,使用语音合成SDK也需要注册,并开启语音合成API服务,详细步骤可以参考    点击打开链接        中的注册部分。
百度语音合成SDK以JAR包+动态链接库形式发布,需要开发者在         点击打开链接      下载SDK开发包,并将libs文件夹拷贝到工程中
百度语音合成(TTS)SDK使用方法_第1张图片

申请必要的权限
[java]  view plain copy
  1. <uses-permission android:name="android.permission.INTERNET"></uses-permission>  
  2. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>  
  3. <uses-permission android:name="android.permission.READ_PHONE_STATE"/>  

初始化SpeechSynthesizer对象
[java]  view plain copy
  1. speechSynthesizer = new SpeechSynthesizer(getApplicationContext(),  
  2.         "holder"this);  
  3. // 此处需要将setApiKey方法的两个参数替换为你在百度开发者中心注册应用所得到的apiKey和secretKey  
  4. speechSynthesizer.setApiKey("your-apiKey""your-secretKey");  

参数设置
[java]  view plain copy
  1. private void setParams() {  
  2.         speechSynthesizer.setParam(SpeechSynthesizer.PARAM_SPEAKER, "0");  
  3.         speechSynthesizer.setParam(SpeechSynthesizer.PARAM_VOLUME, "5");  
  4.         speechSynthesizer.setParam(SpeechSynthesizer.PARAM_SPEED, "5");  
  5.         speechSynthesizer.setParam(SpeechSynthesizer.PARAM_PITCH, "5");  
  6.         speechSynthesizer.setParam(SpeechSynthesizer.PARAM_AUDIO_ENCODE, "1");  
  7.         speechSynthesizer.setParam(SpeechSynthesizer.PARAM_AUDIO_RATE, "4");  
  8.         speechSynthesizer.setParam(SpeechSynthesizer.PARAM_LANGUAGE, "ZH");  
  9.         speechSynthesizer.setParam(SpeechSynthesizer.PARAM_NUM_PRON, "0");  
  10.         speechSynthesizer.setParam(SpeechSynthesizer.PARAM_ENG_PRON, "0");  
  11.         speechSynthesizer.setParam(SpeechSynthesizer.PARAM_PUNC, "0");  
  12.         speechSynthesizer.setParam(SpeechSynthesizer.PARAM_BACKGROUND, "0");  
  13.         speechSynthesizer.setParam(SpeechSynthesizer.PARAM_STYLE, "0");  
  14.         speechSynthesizer.setParam(SpeechSynthesizer.PARAM_TERRITORY, "0");  
  15.     }  
不需要实现这么多参数,具体参数的含义可以参看SDK的使用文档和参数设置。
如果需要对音频播报的音频流进行设置,可以调用如下接口
[java]  view plain copy
  1. speechSynthesizer.setAudioStreamType(AudioManager.STREAM_MUSIC);  
以上内容即可以实现语音合成的操作,识别过程中可以使用SpeechSynthesizerListener来监听状态,从而更好的实现界面同步。
[java]  view plain copy
  1. class listener implements SpeechSynthesizerListener {  
  2.   
  3.        @Override  
  4.        public void onStartWorking(SpeechSynthesizer synthesizer) {  
  5.            logDebug("开始工作,请等待数据...");  
  6.        }  
  7.        @Override  
  8.        public void onSpeechStart(SpeechSynthesizer synthesizer) {  
  9.            logDebug("朗读开始");  
  10.        }  
  11.        @Override  
  12.        public void onSpeechResume(SpeechSynthesizer synthesizer) {  
  13.            logDebug("朗读继续");  
  14.        }  
  15.        @Override  
  16.        public void onSpeechProgressChanged(SpeechSynthesizer synthesizer, int progress) {  
  17.   
  18.        }  
  19.        @Override  
  20.        public void onSpeechPause(SpeechSynthesizer synthesizer) {  
  21.            logDebug("朗读已暂停");  
  22.        }  
  23.        @Override  
  24.        public void onSpeechFinish(SpeechSynthesizer synthesizer) {  
  25.            logDebug("朗读已停止");  
  26.        }  
  27.        @Override  
  28.        public void onNewDataArrive(SpeechSynthesizer synthesizer, byte[] dataBuffer, int dataLength) {  
  29.            logDebug("新的音频数据:" + dataLength);  
  30.        }  
  31.        @Override  
  32.        public void onError(SpeechSynthesizer synthesizer, SpeechError error) {  
  33.            logError("发生错误:" + error.errorDescription + "(" + error.errorCode + ")");  
  34.        }  
  35.        @Override  
  36.        public void onCancel(SpeechSynthesizer synthesizer) {  
  37.            logDebug("已取消");  
  38.        }  
  39.        @Override  
  40.        public void onBufferProgressChanged(SpeechSynthesizer synthesizer, int progress) {  
  41.   
  42.        }  
  43.   
  44.    }  

你可能感兴趣的:(android,百度,语音识别,语音合成)