使用微信语音合成接口(TTS)

使用微信语音合成接口(TTS),第1张

2017-04-19 遇到的一点小问题
APP的收款功能,需要语音播报收到的个别推送消息。听说这个叫TTS(TextToSpeech)。
网上看了一下安卓自带的 androidspeechttsTextToSpeech ,试了试,很麻烦,会d出选择对话框,而且米2S试了下,返回 SUCCESS ,但就是没声音。。。
好吧,测试正常了,试一下效果。
和demo里的 *** 作一样,没什么要特别注意的。除了使用SpeechSynthesizershareInstance()start(str)时,返回的int可能等于20109,这是因为微信开放平台AppID写错或包名签名不对。这个文档没写,要注意。

刚关掉网络试了一下,没有网络会返回-100。又去看了文档,才发现这个微信也是需要网络的。。。汗!换讯飞试试看

虽然视觉上的反馈通常是给用户提供信息最快的方式,但这要求用户把注意力设备上。当用户不能查看设备时,则需要一些其他通信的方法。Android提供了强大的文字转语音Text-to-Speech,TTS API。使开发者能够在应用中添加语音通知和其他语音反馈功能,而不要求用户看着屏幕。
下面的代码展示了如何使用TTS API:
public class TextToSpeechDemo implements TextToSpeechOnInitListener {
private final TextToSpeech mTextToSpeech;//TTS对象
private final ConcurrentLinkedQueue mBufferedMessages;//消息队列
private Context mContext;
private boolean mIsReady;//标识符
public TextToSpeechDemo(Context context){
thismContext=context;//获取上下文
thismBufferedMessages=new ConcurrentLinkedQueue();//实例化队列
thismTextToSpeech=new TextToSpeech(thismContext,this);//实例化TTS
}
//初始化TTS引擎
@Override
public void onInit(int status) {
Logi("TextToSpeechDemo",StringvalueOf(status));
if(status==TextToSpeechSUCCESS){
int result = thismTextToSpeechsetLanguage(LocaleCHINA);//设置识别语音为中文
synchronized (this){
thismIsReady=true;//设置标识符为true
for(String bufferedMessage : thismBufferedMessages){
speakText(bufferedMessage);//读语音
}
thismBufferedMessagesclear();//读完后清空队列
}
}
}
//释放资源
public void release(){
synchronized (this){
thismTextToSpeechshutdown();
thismIsReady=false;
}
}
//更新消息队列,或者读语音
public void notifyNewMessage(String lanaugh){
String message=lanaugh;
synchronized (this){
if(thismIsReady){
speakText(message);
}else{
thismBufferedMessagesadd(message);
}
}
}
//读语音处理
private void speakText(String message){
Logi("liyuanjinglyj",message);
HashMap params=new HashMap();
paramsput(TextToSpeechEngineKEY_PARAM_STREAM,"STREAM_NOTIFICATION");//设置播放类型(音频流类型)
thismTextToSpeechspeak(message, TextToSpeechQUEUE_ADD, params);//将这个发音任务添加当前任务之后
thismTextToSpeechplaySilence(100,TextToSpeechQUEUE_ADD,params);//间隔多长时间
}
}
当然一般手机是不支持中文的可以百度下载讯飞TTS引擎后在测试。
由于TTS引擎的初始化是异步的,所以在执行实际的文字转语音之前需要把消息放到队列中。
可以给TTS引擎发送多个参数。前面展示了如何决定口语消息使用的音频流。在这种情况下,通知声音也使用相同的音频流。
最后,如果处理连续多个消息,最好在每个消息结束后暂停一会在播放下一个消息。这样做会清楚的告诉用户消息的结束和开始。

你好,支持人脸识别是手机的问题,你的手机可能没有人脸识别功能,全景拍摄可以换个相机哦,希望能帮助到你哦,至于TTS语音引擎是微软提供的发音组件,有了这个组件,电脑就可以对英文发声,只有英文才有效,用处不大,金山词霸这种软件需要。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/13148726.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-06-12
下一篇 2023-06-12

发表评论

登录后才能评论

评论列表(0条)

保存