项目开发需要用到文字转语音
的功能,利用 Android 系统自带的Text-to-Speech
可以实现英文转语音
,但是对于中文就无能为力了。对于中文转语音需要特定引擎的支持,谷歌自带的Pico TTS
是不支持的,我的小米手机是度秘语音引擎
支持中文,显然我们没法去控制用户用什么手机,所以抛弃原生的TTS
,考虑接入讯飞语音SDK
。
注册开发者账号
进入讯飞开放平台注册账号。
创建应用
登录账号,进入控制台
,选择创建新应用
。
下载SDK
点击SDK下载
。选择下载服务、平台、应用,然后点击下载。
我这里只选择了在线语音合成,免费的。
然后得到SDK:
集成SDK
首先将对应手机CPU平台的 so 文件
导入到工程中,jar 包导入到 libs 中。
在 Application 中初始化讯飞语音:1
SpeechUtility.createUtility(this, SpeechConstant.APPID +"=xxxxxxxx");
在调用的地方初始化语音对象:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25private SpeechSynthesizer mTts;
private void initMSC() {
mTts = SpeechSynthesizer.createSynthesizer(mActivity, new InitListener() {
public void onInit(int code) {
if (code == ErrorCode.SUCCESS) {
// 设置在线合成
mTts.setParameter(SpeechConstant.ENGINE_TYPE, SpeechConstant.TYPE_CLOUD);
// 设置在线合成发音人
mTts.setParameter(SpeechConstant.VOICE_NAME, "xiaoqi");
//设置合成语速
mTts.setParameter(SpeechConstant.SPEED, "50");
//设置合成音调
mTts.setParameter(SpeechConstant.PITCH, "50");
//设置合成音量
mTts.setParameter(SpeechConstant.VOLUME, "100");
//设置播放器音频流类型
mTts.setParameter(SpeechConstant.STREAM_TYPE, "3");
// 设置播放合成音频打断音乐播放,默认为true
mTts.setParameter(SpeechConstant.KEY_REQUEST_FOCUS, "true");
}
}
});
}
然后调用API:1
2
3
4int code = mTts.startSpeaking("Hello 中国");
if (code != ErrorCode.SUCCESS && code != ErrorCode.ERROR_COMPONENT_NOT_INSTALLED) {
ToastUtils.showShort(mActivity, "语音合成失败,错误码: " + code);
}
过程比较简单,稍微记录一下,更多详情可以参阅官方文档。