Android_Yanbin
Android_Yanbin
  • 发布:2016-12-21 19:20
  • 更新:2023-09-23 18:16
  • 阅读:27858

文字合成语音的实现

分类:HTML5+

HBuilder版本号为7.6.3.201612161809及之后的用户请用如下Native.Js代码实现:

var receiver;  

                receiver = plus.android.implements('com.iflytek.cloud.SynthesizerListener', {  
                    onEvent: function(int eventType, int arg1, int arg2, Bundle obj) {  
                        console.log("onEvent");  
                    },  
                    onSpeakBegin: function() {  
                        console.log("开始阅读");  
                    },  
                    onSpeakPaused: function() {  
                        console.log(" 暂停播放 ");  
                    },  
                    onSpeakResumed: function() {  
                        console.log("继续播放");  
                    },  
                    onBufferProgress: function(percent, beginPos, endPos, info) {  
                        console.log("合成进度" + percent);  
                    },  
                    onSpeakProgress: function(percent, beginPos, endPos) {  
                        console.log("播放进度" + percent);  
                    },  
                    onCompleted: function(error) {  
                        console.log("播放完毕");  
                    }  
                });  

                var main = plus.android.runtimeMainActivity();  

                var SpeechUtility = plus.android.importClass('com.iflytek.cloud.SpeechUtility');  

                SpeechUtility.createUtility(main, "appid=53feacdd");  

                var SynthesizerPlayer = plus.android.importClass('com.iflytek.cloud.SpeechSynthesizer');  

                var play = SynthesizerPlayer.createSynthesizer(main, null);  
                 // 开始合成  
                play.startSpeaking('新年快乐', receiver);  
        // 取消合成  
        play.stopSpeaking();  
        // 暂停播放  
        play.pauseSpeaking();  
        // 继续播放  
        play.resumeSpeaking();

该版本之前的用户请参考下面的写法:
由于Android系统tts不支持中文,使用科大讯飞文字转语音功能,使用如此功能时,需要保证manifest.json中permissions节点含有speech节点(如"Speech": {"description": "管理语音识别插件" })。

var main = plus.android.runtimeMainActivity();  
var SynthesizerPlayer = plus.android.importClass('com.iflytek.speech.SynthesizerPlayer');  
var play = SynthesizerPlayer.createSynthesizerPlayer(main,'appid=53feacdd');  
play.playText('水果',null,null);

iOS平台参考[http://ask.dcloud.net.cn/question/4175)(http://ask.dcloud.net.cn/question/4175)

11 关注 分享
赵梦欢 1***@qq.com JBoss 4***@qq.com Trust z***@qq.com 6***@qq.com z***@gmail.com 2***@qq.com 2***@qq.com 映月辉煌

要回复文章请先登录注册

5***@qq.com

5***@qq.com

安卓8以上不支持,谨慎使用哈
2019-06-04 20:50
2***@qq.com

2***@qq.com

加上onEvent报错,去掉就可以运行了
2019-04-10 16:41
2***@qq.com

2***@qq.com

请问必须在线打包才能看到效果么?我在HBuilder中真机运行报错
2019-04-10 16:25
飞扬的心

飞扬的心

android 发现这个方法云打包有不兼容的现象,有些手机发音不对,其中就有小米 MI 8 Lite,文本“您有一条工单信息,请注意查收” 发音成“屏风起转松”,用讯飞demo测试是发音正常,离线打包替换了讯飞demo的Msc.jar文件后也能发音正常,但云打包的无法修正这个问题,希望尽快解决。
2019-02-25 16:53
html小白

html小白

有没有详细点的代码发出来;
2018-10-10 13:10
7***@qq.com

7***@qq.com

楼主离线的用过吗
2018-01-24 22:06
Android_Yanbin

Android_Yanbin (作者)

回复 晓黑 :
文章中已更新暂停停止和监听播放
2018-01-22 12:28
晓黑

晓黑

暂停和停止
监听播放 等都不知道 咋搞啊
2018-01-21 00:30
3***@qq.com

3***@qq.com

回复 蓝夜精灵 :
同求,解决了吗?
2017-05-15 13:52
JBoss

JBoss

回复 JBoss :
找到方法了,原来还比较方便。
var constant = plus.android.importClass('com.iflytek.cloud.SpeechConstant');

console.debug(constant.VOICE_NAME);
2017-01-10 23:29