注意

推荐您使用新版本Android SDK,本版本后续将不再更新。详情请参见

前提条件阅读接口说明,详情请参见

已获取项目appkey,详情请参见

已获取智能语音服务访问令牌,详情请参见

关键接口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));

}

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐