md5sumandroid_本地语音合成(Android)

一. 离线TTS概述

DUI Lite SDK 离线TTS可使在无网的情况下,提供将文字信息转化为声音信息的能力,方便您更流畅的体验合成音,给您的应用程序增加“嘴巴”功能,更趋近于人。您仅仅需要将下载的SDK嵌入到工程项目中,就可以流畅的获取从文字输入到语音输出的支持。另外,我们也提供了具有特色的发音人(若需要定制,可联系商务),给您带来更好的享受。如果希望语音输出内容更富有感情,可以在对话回复中为回复内容添加SSML标签。

二. SDK使用说明

使用当前功能时,请先授权,否则禁止使用。请参考授权说明

2.1 准备

jar:DUI-lite-SDK-for-Android-xxx.jar

so:libcntts.so,libduiutils.so

资源:

*****_aitts_sent_dict_local.db(字典数据库),

***_local_front.bin(前端资源,包含文本归一化,分词的,韵律等),

zhilingf_common_back_ce_local.***.bin(后端发音人资源,不同发音人资源不一样,demo中默认内置了性感女声的资源,如需其他,请联系商务) ,

*****_aitts_sent_dict_local.db.md5sum(该文件内容为*****_aitts_sent_dict_local.db文件的md5sum值,用于init时SDK检查是否需要重复拷贝到内部目录,文件可选, 文件名为 字典数据库名+.md5sum),

***_local_front.bin.md5sum(该文件内容为***_local_front.bin文件的md5sum值,用于init时SDK检查是否需要重复拷贝到内部目录,文件可选, 文件名为 字典数据库名+.md5sum),

zhilingf_common_back_ce_local.***.bin.md5sum(该文件内容为zhilingf_common_back_ce_local.***.bin文件的md5sum值,用于init时SDK检查是否需要重复拷贝到内部目录,文件可选,文件名为 资源名+.md5sum ),

资源可以放在assets目录中,也可以自己手动放在磁盘中,比如/sdcard/

三. 引擎运行流程图

四. 示例代码

涉及引擎 AILocalTTSEngine,详细使用示例请参考 demo

4.1 配置config信息

AILocalTTSConfig config = new AILocalTTSConfig();

// 设置assets目录下合成字典名和相应的Md5文件名

config.setDictResource(SampleConstants.TTS_DICT_RES, SampleConstants.TTS_DICT_MD5);

// 设置合成字典的外部路径,包含文件名(需要手动拷贝到指定目录)

// config.setDictResource("/sdcard/speech/tts/aitts_sent_dict_idx_middle_2.0.4_20180806.db");

// 设置assets目录下前端合成资源名和相应的Md5文件名

config.setFrontBinResource(SampleConstants.TTS_FRONT_RES, SampleConstants.TTS_FRONT_RES_MD5);

// 设置合成前端资源的外部路径,包含文件名(需要手动拷贝到指定目录)

// config.setFrontBinResource("/sdcard/speech/tts/local_front.bin");

// default is true

config.setUseCache(false);

//设置后端合成音色资源,如果只需设置一个,则array只需要传一个成员值就可以

config.addSpeakerResource(mBackResBinArray, mBackResBinMd5sumArray);

// 设置合成音色的外部路径,包含文件名(需要手动拷贝到指定目录)

// config.addSpeakerResource("/sdcard/speech/tts/zhilingf_common_back_ce_local.v2.1.0.bin");

部分api解释如下表

方法

方法说明

参数说明

默认值

备注

setUseCache(boolean useCache)

设置是否使用缓存

true/false

true

缓存TTS缓存信息和音频文件,存放在应用外部缓存目录下的 ttsCache 文件夹下

setUseCache(boolean useCache, String cacheDirectory)

设置是否使用缓存和缓存的文件夹

useCache       是否使用缓存

cacheDirectory 缓存目录

useCache       true

cacheDirectory null

缓存目录,设置为 null,则为默认缓存目录:应用外部缓存目录下的 ttsCache 文件夹

addSpeakerResource(String[] speakerResource)

设置 发音人资源,若只需要一个发音人,则设置一个即可。设置多个时第1个即为使用的发音人

1. 如在 sd 里设置为绝对路径 如/sdcard/speech/***.bin

2. 如在 assets 里设置为名称

NA

NA

addSpeakerResource(String speakerResource)

设置 发音人资源

1. 如在 sd 里设置为绝对路径 如/sdcard/speech/***.bin

2. 如在 assets 里设置为名称

NA

NA

addSpeakerResource(String[] speakerResource, String[] speakerResourceMd5sum)

设置assets目录下的后端发音人资源名和对应的md5文件

speakerResource       assets 目录下发音人资源名

speakerResourceMd5sum 对应的md5文件

NA

若只需要一个发音人,则设置一个即可,初始化时默认以第一个资源名加载进内核

clearSpeakerResourceAndMD5()

清除发言人资源名和对应的md5文件

NA

NA

NA

setEnableOptimization(boolean enableOptimization)

设置是否开启cpu优化

true/false

true

若某些机器合成速度慢,可以关闭cpu优化功能,设置为false

setDictResource(String dictResource)

设置合成字典

1. 如在 sd 里设置为绝对路径 如/sdcard/speech/***.db

2. 如在 assets 里设置为名称

NA

NA

setDictResource(String dictResource, String dictResourceMd5sum)

置assets目录下的合成字典资源名字和对应的md5文件

dictResource       合成字典文件名

dictResourceMd5sum 对应的md5文件

NA

NA

setUserDictResource(String userDictResource)

用户自定义词典,用于修复离线合成问题,如多音字发音、停顿和数字字母符号读法错误等

自定义词典文件名或者文件路径

NA

非必需,正常情況用不着,这个只有有发音问题需要紧急修复可以改这个资源。

setFrontBinResource(String frontBinResource)

设置 FrontBinResource,包含文本归一化,分词的,韵律等

1. 如在 sd 里设置为绝对路径 如/sdcard/speech/***.bin

2. 如在 assets 里设置为名称

NA

NA

setFrontBinResource(String frontBinResource, String frontBinResourceMd5sum)

设置assets目录下的合成前端资源的名字和对应的md5文件,包含文本归一化,分词的,韵律等

frontBinResource       资源文件名

frontBinResourceMd5sum 对应的md5文件

NA

NA

4.2 初始化引擎并初始化合成引擎

mEngine = AILocalTTSEngine.getInstance();//创建实例

mEngine.init(config, new AILocalTTSListenerImpl());//初始化合成引擎

4.3 实现引擎回调方法

private class AILocalTTSListenerImpl implements AILocalTTSListener {

@Override

public void onInit(int status) {

Log.i(Tag, "初始化完成,返回值:" + status);

Log.i(Tag, "onInit");

if (status == AIConstant.OPT_SUCCESS) {

tip.setText("初始化成功!");

btnStart.setEnabled(true);

} else {

tip.setText("初始化失败!code:" + status);

}

}

@Override

public void onError(String utteranceId, AIError error) {

tip.setText("检测到错误");

content.setText(content.getText() + "\nError:\n" + error.toString());

}

@Override

public void onSynthesizeStart(String utteranceId) {

runOnUiThread(new Runnable() {

@Override

public void run() {

tip.setText("合成开始");

Log.d(Tag, "合成开始");

}

});

}

@Override

public void onSynthesizeDataArrived(String utteranceId, byte[] audioData) {

//Log.d(Tag, "合成pcm音频数据:" + audioData.length);

//正常合成结束后会收到size大小为0的audioData,即audioData.length == 0。应用层可以根据该标志停止播放

//若合成过程中取消(stop或release),则不会收到该结束标志

}

@Override

public void onSynthesizeFinish(String utteranceId) {

runOnUiThread(new Runnable() {

@Override

public void run() {

tip.setText("合成结束");

Log.d(Tag, "合成结束");

}

});

}

@Override

public void onSpeechStart(String utteranceId) {

tip.setText("开始播放");

Log.i(Tag, "开始播放");

}

@Override

public void onSpeechProgress(int currentTime, int totalTime, boolean isRefTextTTSFinished) {

showTip("当前:" + currentTime + "ms, 总计:" + totalTime + "ms, 可信度:" + isRefTextTTSFinished);

}

@Override

public void onSpeechFinish(String utteranceId) {

tip.setText("播放完成");

Log.i(Tag, "播放完成");

}

}

4.4 配置intent

AILocalTTSIntent aILocalTTSIntent = new AILocalTTSIntent();

// 设置合成音语速,范围为0.5~2.0

aILocalTTSIntent.setSpeed(0.85f);

aILocalTTSIntent.setUseSSML(false); // 设置是否使用ssml合成语法,默认为false

aILocalTTSIntent.setVolume(100); // 设置合成音频的音量,范围为1~500

// 保存合成音频到指定路径,格式为wav

aILocalTTSIntent.setSaveAudioFilePath(Environment.getExternalStorageDirectory() + "/tts/"

+ System.currentTimeMillis() + ".wav");

更多的配置信息如下表

方法

方法说明

参数说明

默认值

备注

setSpeed(float speed)

设置语音合成的速度

合成语速 范围为0.5~2.0

1.0f

NA

setVolume(int volume)

设置语音合成的音量

合成音量 范围为1~500

80

NA

setUseSSML(boolean useSSML)

设置是否使用ssml

是否配置ssml

false

NA

setStreamType(int streamType)

设置播放器的stream type

audioTrack播放stream type

AudioManager.STREAM_MUSIC

setAudioAttributes(int audioAttributesUsage, int audioAttributesContentType)

设置音频属性

audioAttributesUsage       类似 AudioAttributes.USAGE_MEDIA 的设置

audioAttributesContentType 类似 AudioAttributes.CONTENT_TYPE_MUSIC 的设置

AudioAttributes.USAGE_UNKNOWN

AudioAttributes.CONTENT_TYPE_UNKNOWN

Android O 及以上系统使用,Android O 以前的系统请使用 setStreamType

setSaveAudioFilePath(String saveAudioFilePath)

设置合成的音频的全路径包含文件名

文件全路径

NA

NA

switchToSpeaker(String speakerResource)

切换发音人

1. 如在 sd 里设置为绝对路径 如/sdcard/speech/***.bin

2. 如在 assets 里设置为名称

NA

需要使用设置过的发音人

4.5 启动合成

// 合成并播放

mEngine.speak(aILocalTTSIntent, refText, "1024");

// 合成音频,不播放,同时输出实时pcm音频,音频回调在onSynthesizeDataArrived接口

// mEngine.synthesize(aILocalTTSIntent, refText, "1024");

4.6 引擎停止唤醒销毁

mEngine.pause();

mEngine.resume();

mEngine.stop();

mEngine.destroy();

请在合适的位置进行对应的方法调用

4.7 完整代码块参考

AILocalTTSEngine

五. 错误码

六. 接口文档

更多的接口内容与描述请参阅 javadoc

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值