本文介绍了如何使用阿里云智能语音服务提供的旧版Android SDK,包括SDK的安装方法及SDK代码示例。请注意,新用户请关注新版Android SDK。
注意
推荐您使用新版本Android SDK,本版本后续将不再更新。详情请参见Android SDK。
前提条件
关键接口
NlsClient:语音处理客户端,利用该客户端可以进行一句话识别、实时语音识别和语音合成的语音处理任务。该客户端为线程安全,建议全局仅创建一个实例。
SpeechSynthesizer:代表一次语音合成请求。
SpeechSynthesizerCallback:语音合成回调接口,在获得合成音频数据、发生错误等事件发生时会触发回调。您需要实现此接口,在回调方法中加入自己的处理逻辑。
调用顺序
创建NlsClient实例。
定义SpeechSynthesizerCallback实现类,按业务需求处理识别结果或错误情况。
调用NlsClient.createSynthesizerRequest()方法得到SpeechSynthesizer实例。
设置SpeechSynthesizer参数。
包括access Token、appkey、语音文本(text)、发音人(voice)和语速(speechRate)等。
调用SpeechSynthesizer.start()方法开始与云端服务连接。
在回调中获得合成的音频数据并播放,或者处理错误。
调用SpeechSynthesizer.stop()方法结束语音合成。
说明如果需要发起新的请求,请重复步骤3~7。
调用NlsClient.release()方法释放客户端实例。
Proguard配置
如果代码使用了混淆,请在proguard-rules.pro中配置:
-keep class com.alibaba.idst.util.*{*;}
代码示例
创建识别请求
// 创建语音合成对象 speechSynthesizer = client.createSynthesizerRequest(callback); speechSynthesizer.setToken(""); speechSynthesizer.setAppkey(""); // 设置语音编码,PCM编码可以直接用audioTrack播放,其他编码不行。 speechSynthesizer.setFormat(SpeechSynthesizer.FORMAT_PCM); // 以下选项都会改变最终合成的语音效果。 // 设置语音数据采样率 speechSynthesizer.setSampleRate(SpeechSynthesizer.SAMPLE_RATE_16K); // 设置人声 speechSynthesizer.setVoice(SpeechSynthesizer.VOICE_XIAOGANG); // 设置语音合成方法 speechSynthesizer.setMethod(SpeechSynthesizer.METHOD_RUS); // 设置语速 speechSynthesizer.setSpeechRate(100); // 设置是否返回语音对应的时间戳信息 speechSynthesizer.setEnableSubtitle(true); // 设置要转为语音的文本 speechSynthesizer.setText("欢迎使用智能语音!"); speechSynthesizer.start()
获取合成语音并播放
// 获取音频数据的回调,在这里将音频写入播放器。 @Override public void OnBinaryReceived(byte[] data, int code) { Log.d(TAG, "binary received length: " + data.length); if (!playing) { playing = true; audioTrack.play(); } audioTrack.write(data, 0, data.length); }
返回语音时间戳信息
// 调用onMetaInfo,需要设置:SpeechSynthesizer.setEnableSubtitle(true)。 @Override public void onMetaInfo(String message, int code) { Log.d(TAG,"onMetaInfo " + message + ": " + String.valueOf(code)); }
文档内容是否对您有帮助?