全部产品
阿里云办公

Android SDK 2.0

更新时间:2018-10-18 14:42:26

版本提示

本文档中的SDK只适用于7月5日新发布的2.0版语音服务,如果您是之前开通的,要使用此SDK需要新开通2.0版服务

下载安装

  1. 下载SDK和示例代码
  2. 解压得到nls-sdk-android文件夹,即是示例代码工程,在工程app/libs目录下是aar格式的SDK包
  3. 用Android Studio打开此工程查看示例代码,其中语音转写实例代码在SpeechSynthesizerActivity类中
  4. 运行示例代码前,您需要先在智能语音管控台创建项目获取appkey,还需要获取访问令牌,详见相关文档

SDK关键接口

  • NlsClient: 智能语音客户端类,相当于所有语音相关处理类的factory,全局创建一个实例即可。
  • SpeechSynthesizer: 代表一次语音合成请求
  • SpeechSynthesizerCallback: 语音合成回调接口,在获得合成音频数据,发生错误等事件发生时会触发回调。您应当实现此接口,在回调方法中加入自己的处理逻辑。

调用顺序

  1. 创建NlsClient的实例
  2. 定义SpeechSynthesizerCallback实现类,按您自己的业务需要处理识别结果或错误情况
  3. 调用NlsClient.createSynthesizerRequest()方法得到SpeechSynthesizer的实例
  4. 设置SpeechSynthesizer参数,包括accessToken和appkey
  5. 参数还包括要合成语音的文本(text),以及选定的人声(voice),语速(speechRate)等影响发声效果的参数
  6. 调用SpeechSynthesizer.start()方法开始与云端服务连接
  7. 在回调中获得合成的音频数据并播放,或处理错误
  8. 调用SpeechSynthesizer.stop()方法结束语音合成
  9. 如果需要发起新的请求,可以重复第3-8步
  10. 调用NlsClient.release()方法释放客户端实例

代码示例

创建识别请求

  1. // 创建语音合成对象
  2. speechSynthesizer = client.createSynthesizerRequest(callback);
  3. // 请使用https://help.aliyun.com/document_detail/72153.html 动态生成token
  4. speechSynthesizer.setToken("");
  5. // 请使用阿里云语音服务管控台(https://nls-portal.console.aliyun.com/)生成您的appkey
  6. speechSynthesizer.setAppkey("");
  7. // 设置语音编码,pcm编码可以直接用audioTrack播放,其他编码不行
  8. speechSynthesizer.setFormat(SpeechSynthesizer.FORMAT_PCM);
  9. // 以下选项都会改变最终合成的语音效果,可以按文档调整试听效果
  10. // 设置语音数据采样率
  11. speechSynthesizer.setSampleRate(SpeechSynthesizer.SAMPLE_RATE_16K);
  12. // 设置人声
  13. speechSynthesizer.setVoice(SpeechSynthesizer.VOICE_XIAOGANG);
  14. // 设置语音合成方法
  15. speechSynthesizer.setMethod(SpeechSynthesizer.METHOD_RUS);
  16. // 设置语速
  17. speechSynthesizer.setSpeechRate(100);
  18. // 设置要转为语音的文本
  19. speechSynthesizer.setText("欢迎使用智能语音!");
  20. speechSynthesizer.start()

获取合成语音并播放

  1. // 获取音频数据的回调,在这里把音频写入播放器
  2. @Override
  3. public void OnBinaryReceived(byte[] data, int code)
  4. {
  5. Log.d(TAG, "binary received length: " + data.length);
  6. if (!playing) {
  7. playing = true;
  8. audioTrack.play();
  9. }
  10. audioTrack.write(data, 0, data.length);
  11. }