mrhua
mrhua
  • 发布:2015-06-13 14:40
  • 更新:2019-09-18 08:42
  • 阅读:16425

如何调用android的文字转语音

分类:Native.js

我试了一下,没写出来。有大神出来纠正么?
var context = plus.android.importClass("android.content.Context");
var text2speach = plus.android.importClass("android.speech.tts.TextToSpeech");
var listener = plus.android.implements("android.speech.tts.TextToSpeech.OnInitListener",{
"onInit":function(status){
alert(status);
if(status==text2speach.SUCCESS)
alert("succ");
}
});

var main = plus.android.runtimeMainActivity();
var tts = new text2speach(main.this,listener);
tts.speak("中文TTS", text2speach.QUEUE_FLUSH, null);

经过检查,tts 是空值

2015-06-13 14:40 分享
已邀请:

最佳回复

Android_磊子

Android_磊子

由于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=5177d8fe');  
play.playText('水果',null,null);

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

  • mrhua (作者)

    var Sc=plus.android.importClass('com.iflytek.speech.SpeechConstant');

    得到结果为空,无法设置语音语调语速,而且这个发音最后一个字非常短促,体验不好!

    有什么办法解决上面的问题?

    2015-06-17 20:39

  • W3Y

    太感谢了,刚开始看评论没有去尝试这个例子,结果找了整整一天还是使用这个例子成功了。

    2016-03-15 15:49

  • 841753635@qq.com

    回复 W3Y:你好,请问manifest.json中的节点要怎么配,没太理解,想请你交我下吗,或者有案例吗,我的邮箱:841753635@qq.com,谢谢了

    2017-05-03 16:59

  • 距离您98米

    是不是限制一天500次啊?

    2018-04-03 09:26

  • 695835679@qq.com

    为什么说的话,听不懂,还是说的太快了

    2019-09-23 09:06

Android_Yanbin

Android_Yanbin - 我们不一样

在需要语音合成的地方加入如下Native.Js代码
var main = plus.android.runtimeMainActivity();
var SpeechUtility = plus.android.importClass('com.iflytek.cloud.SpeechUtility');
SpeechUtility.createUtility(main,"appid=你的appid");

var SynthesizerPlayer = plus.android.importClass('com.iflytek.cloud.SpeechSynthesizer');
var play = SynthesizerPlayer.createSynthesizer(main, null);
play.startSpeaking('中国是中国共产党打下来的,我就知道,这段话不会被查水表的',null);

即可实现。注意 “你的appid” 在讯飞开放平台申请【http://www.xfyun.cn/】

  • wr_great@163.com

    请教,为什么可以直接导入com.iflytek.cloud.SpeechUtility类,是不是原生的Andorid就直接内置了com.iflytek.cloud.SpeechUtility类

    2017-02-28 17:35

  • 米虫

    这个必须联网才能用吗?

    2017-05-10 15:22

  • Android_Yanbin

    需要联网 是5+runtime 内置了这个类 android原生并没有

    2017-05-11 11:10

  • 距离您98米

    是不是限制一天500次啊?

    2018-04-08 17:22

  • 海平线的那边

    需要引入什么额外的js吗?我引入了mui.js和plus.js,现在一直提示SpeechUtility 未定义

    2018-09-25 12:27

479209228@qq.com

479209228@qq.com

怎么监听播放是否结束?

394980922@qq.com

394980922@qq.com

暂停和停止 是怎么弄?

  • Android_Yanbin

    pauseSpeaking() resumeSpeaking() stopSpeaking()

    2017-09-19 16:39

全敏

全敏 - qm

//安卓  
                    var main = plus.android.runtimeMainActivity();  
                    var SpeechUtility = plus.android.importClass('com.iflytek.cloud.SpeechUtility');  
                    SpeechUtility.createUtility(main,"appid=599c0509");  
                    var SynthesizerPlayer = plus.android.importClass('com.iflytek.cloud.SpeechSynthesizer');  
                    var play = SynthesizerPlayer.createSynthesizer(main, null);  
                    play.startSpeaking('全敏真帅啊!',null);
  • 下一页丶翻

    第二第三句好像要不要都是一样的。怎么设置语速,音量

    2017-12-12 14:53

see7di@gmail.com

see7di@gmail.com - www.7di.net

可以選擇發音人,語速,音量等
另外也可以暫停或停止甚至銷燬播放對象

var main = plus.android.runtimeMainActivity();
var SpeechUtility = plus.android.importClass('com.iflytek.cloud.SpeechUtility');
SpeechUtility.createUtility(main,'appid=599c0509');
var SynthesizerPlayer = plus.android.importClass('com.iflytek.cloud.SpeechSynthesizer');
var play = SynthesizerPlayer.createSynthesizer(main, null);

//合成参数设置,详见《MSC Reference Manual》 SpeechSynthesizer 类 http://mscdoc.xfyun.cn/android/api/
play.setParameter('voice_name','xiaoyu'); //发音人 xiaoyan,xiaoyu,vixy,vixq,vixf,vixl,vixx,vils(更多发音人可参见官方手冊)
play.setParameter('speed','90'); //语速,范围 0~100
play.setParameter('volume','100'); //音量,范围 0~100
play.setParameter('pitch','50'); //语调,范围 0~100
play.setParameter('engine_type','cloud'); //云端模式
//play.setParameter("tts_audio_path",'./sdcard/iflytek.pcm'); //如果不需要保存合成音频,注释该行代码(仅支持保存为 pcm 和 wav 格式)

play.startSpeaking('许久后,我缓缓抬起头,却见吴大先生不知何时进屋了.嘿真是没感情的家伙!',null);

window.setTimeout(function(){
console.log(play.isSpeaking());
play.pauseSpeaking();
console.log(play.isSpeaking());
play.stopSpeaking();
console.log(play.isSpeaking());
play.destroy();
play=null;
},2000); //2秒之後執行
main=SpeechUtility=SynthesizerPlayer=null;

蔡繁荣

蔡繁荣 - 发表是最好的记忆

我的理解是除非使用原生代码实现边下载边播放的功能,否则用html5plus目前是无法支持的。

所以,当前比较好的方案是先下载保存到本地临时文件,然后再进行播放。

这样也可以比较好的同时兼容iOS和android,因为播放问题iOS和android可能不一样

大山

大山

这个问题好像并没有解决呀,作为示例我也没有测试成功

  • Android_磊子

    什么环境下没有测试成功,通过HBuilder真机调试使用科大讯飞api是可以通的。

    2016-02-15 17:24

  • liufangdelang@163.com

    我也没有测试通过,求解决

    2017-05-02 09:31

战士

战士

请问,问题解决了吗?

  • Android_磊子

    同学你出现什么问题了,通过HBuilder真机调试使用科大讯飞api是可以通的。

    2016-03-01 11:11

努力加载中
谷震平

谷震平

也遇到这个问题了,支持语言转文字,却不支持文字转语言的D厂。

有点让人不省心。

蓝夜精灵

蓝夜精灵

var tts = new text2speach(main.this,listener);
这一句有问题 但还 没想到解决办法 不知道兄弟 你解决了吗

wr_great@163.com

wr_great@163.com

var SpeechUtility = plus.android.importClass('com.iflytek.cloud.SpeechUtility');能直接导入,是不是因为android系统里面内置了科大讯飞的语音?

  • DCloud_heavensoft

    打包时在manifest里选择语音识别,把科大讯飞打到包里就可以直接用

    2017-03-06 13:45

晓黑

晓黑

暂停和停止
监听播放 等都不知道 咋搞啊

距离您98米

距离您98米 - 哈哈

科大讯飞,一天只支持播报500次吗?

小白啊

小白啊

用jQuery

122548589@qq.com

122548589@qq.com

怎么可以更换播放的发声?

绝地求生

绝地求生

可以使用百度tts请两天刚集成,还不错

苛学加

苛学加

mark

美好时光

美好时光

我在真机上调试提示var SynthesizerPlayer = plus.android.importClass('com.iflytek.speech.SynthesizerPlayer'); 这行错误,好像是没有这个类。但在manifest.json中permissions只有语音输入的,没看见其他的。
请问怎么解决的,谢谢!

501919993@qq.com

501919993@qq.com

有兼容问题 安卓9以上就不支持了

673011635@qq.com

673011635@qq.com - 90后IT男|CEO|创始人

参考这里:https://blog.csdn.net/u012442504/article/details/93476504

673011635@qq.com

673011635@qq.com - 90后IT男|CEO|创始人

参考这里:https://blog.csdn.net/u012442504/article/details/93476504

869345109@qq.com

869345109@qq.com

com.iflytek.cloud.SpeechUtility 目前我引用这个类的时候也是提示未定义

要回复问题请先登录注册