在线合成


1. 概述

开发者通过集成思必驰在线语音合成(Text to Speech,TTS)服务,为设备提供将文字信息转化为声音信息的能力,相当于给应用适配了“嘴巴”功能。

将SDK导入到工程中,就可以获取从文字输入到语音输出的支持。

另外,我们也提供了众多特色的发音人供您选择,其合成音在音色等各方面都趋近于人声,给您带来更好的体验。如果希望语音输出内容更富有感情,可以在对话回复中为回复内容添加SSML标签

内置发音人列表

资源名 描述
feyinf 女老师风吟;女声;威严正式;中英混合
xiyaof 标准女声小妖;女声;慵懒烟嗓;中英混合
lzliaf 可爱男童连连;男声;活泼可爱;中英混合
xjingf 飘逸女声小静;女声;商务知性;中英混合
lucyfa 标准女声小浩;女声;干练;中英混合
zhilingfa 甜美女神小玲;女声;甜美、自然、性感;中英混合
lzliafa 可爱男童连连;男童;活泼可爱;中英混合
lili1f_yubo 娱报女声璃璃;女声;娱乐播报、活力;中英混合
juyinf_guigushi 鬼故事绝音;女声;自然;中英混合
cyangf 女学生初阳;女声;可爱;中英混合
xiyaof_laoshi 女老师小妖;女声;自然;中英混合
qianranfa 可爱女童然然;女童;天真俏皮;中英混合
aningf 标准女声安宁;女声;温婉;中英混合
yaayif 女声杨阿姨;女声;和蔼可亲;中英混合
gdgm 沉稳幽默纲叔;男声;传统;中英混合
zhilingf 甜美女神小玲;女声;甜美、自然、性感;中英混合
xizhef 女老师行者;女声;严肃;中英混合
xijunm 标准男声小军;男声;新闻播报;中英混合
xijunma 标准男声小军;男声;新闻播报;中英混合
kaolam 标准男声考拉;男声;标准;中英混合
qiumum 标准男声秋木;男声;活泼开朗;中英混合
tzruim 标准男声小睿;男声;活力朝气;中英混合
wjianm 标准男声小江;男声;亲切友善;中英混合
qianranf 可爱女童然然;女童;天真俏皮;中英混合
linbaf_qingxin 清新女声零八;女声;自然;中英混合
linbaf_gaoleng 高冷女声零八;女声;自然;中英混合
anonyg 标准女童佚佚;女童;传统;中文
yukaim_all 磁性男声俞老师;男声;自然;中英混合
xiyaof_qingxin 清新女声小妖;女声;清新甜美;中英混合
hyanif 邻家女声小妮;女声;温柔亲切;中文
xjingf_gushi 故事女声小静;女声;自然;中英混合
zzherf 标准女声朱株儿;女声;故事;中英混合
zzhuaf 故事女声砖砖;女声;自然;中英混合
hyanifa 邻家女声小妮;女声;温柔亲切;中英混合
lili1f_diantai 电台女声璃璃;女声;电台、安静;中英混合
lanyuf 标准女声蓝雨;女声;温柔甜美;中英混合
jjingf 知性女声晶晶;女声;知性大方;中英混合
gqlanf 温柔女声小兰;女声;温柔、邻家;中英混合
smjief 清亮女声小洁;女声;亲和;中英混合
jlshim 男声季老师;男声;成熟稳重;中英混合
zxcm 风趣幽默星哥;男声;传统;中文
kaolaf 清纯女声考拉;女声;端庄优雅;中英混合
boy 标准男童堂堂;男童;憨厚;中英混合
gdfanf_boy 标准男童方方;男童;自然活泼;中英混合
geyou 淡定风趣葛爷;男声;传统;中英混合
lili1f_shangwu 商务女声璃璃;女声;商务大气;中英混合
anonyf 标准平和小佚;女声;传统;中英混合
lzyinfa 清脆女生小颖;女声;自然;中英混合

2. API说明

2.1 初始化

初始化引擎并实现 AITTSListener 回调接口,监听引擎合成和播报的状态。

AICloudTTSEngine mEngine = AICloudTTSEngine.createInstance();
mEngine.init(new AICloudTTSConfig.Builder()
                .setUseStopCallback(true) //设置是否在stop之后回调 onSpeechFinish ,默认是true 回调
                .setUseCache(false)
                .build(), 
new AITTSListener(){
            @Override
            public void onInit(int status) {
                if (status == AIConstant.OPT_SUCCESS) {
                    Log.i(Tag, "初始化成功!");
                } else {
                    Log.i(Tag, "初始化失败!");
                }
            }

            @Override
            public void onError(String utteranceId, AIError error) {
            }

            @Override
            public void onReady(String utteranceId) {
            }

            @Override
            public void onCompletion(String utteranceId) {
                // 播报完成
            }

            @Override
            public void onProgress(int currentTime, int totalTime, boolean isRefTextTTSFinished) {
                // 播报中
            }

            @Override
            public void onSynthesizeStart(String utteranceId) {
                // 子线程,合成开始
            }

            @Override
            public void onSynthesizeDataArrived(String utteranceId, byte[] audioData) {
                // 子线程,mp3 音频数据,audioData.length 为 0 说明合成结束
            }

            @Override
            public void onSynthesizeFinish(String utteranceId) {
                // 子线程,合成完成
            }
        });
输入 输出
AICloudTTSConfig 初始化、合成、播放状态
AITTSListener 音频数据、播放音频

2.2 开始合成

构建引擎启动参数,并调用合成方法:

AICloudTTSIntent cloudTTSIntent = new AICloudTTSIntent();
cloudTTSIntent.setTextType("text");
cloudTTSIntent.setRealBack(true);//设置是否实时反馈,默认为实时反馈为true
cloudTTSIntent.setSpeed(1.0f);//设置语速
cloudTTSIntent.setAudioType(AIConstant.TTS_AUDIO_TYPE_MP3);//设置合成音频类型,默认为mp3
cloudTTSIntent.setSpeaker("gqlanfp");
mEngine.synthesize(content.getText().toString(), "1025",cloudTTSIntent);
输入 输出
text -
utteranceId -
AICloudTTSIntent 见初始化回调合成的音频数据

更多启动参数如下:

方法名 取值 说明 默认值
setServer url 设置请求地址,情感必须:https://tts.dui.ai/runtime/v3/synthesize DEFAULT_CLOUD_TTS_SERVER
setSampleRate(int sampleRate) 16000、24000 设置采样率,情感必须24000 16000
setMp3Quality(String mp3Quality) low、high 设置音频质量,情感必须为high low
setAudioType(String audioType) mp3、wav、pcm、wav.alaw、opus 音频格式 mp3
setEmotion(String emotion) default、happy、sorry、sad 指定情感合成 为空,不启用情感,普通tts合成
setSpeed(float speed) (0.5,2] 设置语速(0.5表示语速快,2.0表示语速慢) 1
setPitchChange(String pitchChange) (-60,60] 设置语调 0
setVolume(int volume) (1,100] 设置音量(1表示音量小,100表示音量大) 50
setSpeaker(String speaker) 请参考发音人列表 设置发音人 zhilingf
setSaveAudioPath(String saveAudioPath) 音频路径 保存音频 不设置默认不保存
setRealBack(boolean realBack) true、false 设置是否实时反馈 true

2.3 开始播放

调用speak方法合成并播放,需要指定音频通道:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
    cloudTTSIntent.setAudioAttributes(new AudioAttributes.Builder()
                    .setUsage(AudioAttributes.USAGE_MEDIA)
                    .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
                    .build());
} else {
   cloudTTSIntent.setStreamType(AudioManager.STREAM_MUSIC);//设置合成音播放的音频流,默认为音乐流
}

mEngine.speak(content.getText().toString(), "1025",cloudTTSIntent);

开发者需要区分speak与synthesize接口的区别:

  • synthesize,仅合成接口

  • speak,合成后,内部会创建播放器播放合成音频数据

2.4 停止合成

mEngine.stop()

2.5 暂停播放

mEngine.pause();

2.6 恢复播放

mEngine.resume();

2.7 销毁引擎

mEngine.release();

3. 错误码

4. 常见问题

results matching ""

    No results matching ""