山川同学
山川同学
  • 发布:2015-04-01 17:08
  • 更新:2019-09-20 14:22
  • 阅读:6895

如何调用ios的文字转语音

分类:Native.js

Native.js如何调用ios的文字转语音。
plus.ios.importClass("AVSpeechSynthesizer"); 之后该怎么写

2015-04-01 17:08 分享
已邀请:

最佳回复

山川同学

山川同学 (作者)

向IOS同事请教,已解决该问题。

var AVAudioSession = plus.ios.importClass("AVAudioSession");  
var AVSpeechSynthesizer = plus.ios.importClass("AVSpeechSynthesizer");  
var AVSpeechUtterance = plus.ios.importClass("AVSpeechUtterance");  
var AVSpeechSynthesisVoice = plus.ios.import("AVSpeechSynthesisVoice");  
AVAudioSession.sharedInstance().setCategoryerror("AVAudioSessionCategoryPlayback",null);  
var sppech = new AVSpeechSynthesizer();  
var utterance =  AVSpeechUtterance.speechUtteranceWithString("共产主义接班人");  
 utterance.plusSetAttribute("rate",0.3);  
sppech.speakUtterance(utterance);  
//停止  
sppech.stopSpeakingAtBoundary(0)  
//暂停  
sppech.pauseSpeakingAtBoundary(0);  
//继续  
sppech.continueSpeaking(0);  
plus.ios.deleteObject(voice);  
plus.ios.deleteObject(utterance);  
plus.ios.deleteObject(sppech);  
plus.ios.deleteObject(AVAudioSession);

需iOS7.0及以上系统支持此功能
Android平台参考http://ask.dcloud.net.cn/question/6473

  • 山川同学 (作者)

    语速设置找不到一个合适的值,有人遇到过吗?

    2015-04-01 20:34

  • SkyGrass

    没声音啊?

    2016-01-12 23:01

  • 谷震平

    麻烦能将环境配置给一份吗? 直接用源码有问题。

    2016-06-10 18:43

  • Viccy

    并没有声音

    2017-04-26 17:09

  • 我已无力吐槽

    没有声音是怎么回事

    2017-08-23 17:25

  • 773656208@qq.com

    并没有声音

    2017-12-25 14:52

  • 836890151@qq.com

    怎么监听播放完毕

    2018-04-26 20:53

  • 806921434@qq.com

    可以,有声音,就是不知道怎么设置播放语速和声音

    2018-06-04 10:23

  • CodeMenkey

    iOS怎么实现在后台播放

    2019-05-06 15:50

  • eachann

    回复 山川同学: 不是调不了,是语速那个写法没效果吧

    2019-09-17 10:20

DCloud_App_Array

DCloud_App_Array

LiKin

LiKin

使用你的ios文字转语音源码,会闪退,一直不成功,是什么原因导致的?如果有时间,劳烦回复一下,万分感谢!

DCloud_App_Array

DCloud_App_Array

首先确认在HBuilder中真机运行是否存在问题?
如果提交云端打包需要确认manifest.json文件在“模块权限配置”中选择了“Audio(音频)”模块,或者在plus->distribute->apple->frameworks节点下添加要引用的“AVFoundation.framework”。

  • LiKin

    真机调试到这里 sppech.speakUtterance(utterance); 就闪退。

    2016-01-12 21:07

努力加载中
蓝夜精灵

蓝夜精灵

播放过程是异步调用的 该如何来判断 是否播放完成了呢?

JBoss

JBoss

没有声音啊!大家如上所写都能播放声音吗?

晓黑

晓黑

不知道如何添加 监听事件 delegate 会闪退
https://www.jianshu.com/p/acd57725ba4d

 var delegate = plus.ios.implements("AVSpeechSynthesizerDelegate",{"speechSynthesizer:didFinishSpeechUtterance:":function(){  
    console.log('info:'+arguments.length);  
}});  

 sppech.plusSetAttribute('delegate', delegate);
我的地盘

我的地盘

请问怎样在后台也能继续播报? 切换到后台后,语音播报就停止了。manifest里加"UIBackgroundModes":["audio"] 没用

  • 我的地盘

    貌似解决了,不知道以后会不会有其问题产生。dcloud不错,这种问题都能简单实现。

    2018-03-04 23:05

  • 距离您98米

    回复 我的地盘:切换后台怎样实现播报?

    2018-04-08 09:28

  • 我的地盘

    需要些原生语言实现IOS的文字转语音后台播放。我下面写出来

    var AVAudioSession = plus.ios.importClass("AVAudioSession"),

    AVAudioSessionObj = AVAudioSession.sharedInstance();

    AVAudioSessionObj.setCategoryerror('AVAudioSessionCategoryPlayback',null);

    AVAudioSessionObj.setActiveerror('YES', null);


        var AVSpeechSynthesizer = plus.ios.importClass("AVSpeechSynthesizer");  
    var AVSpeechUtterance = plus.ios.importClass("AVSpeechUtterance");
    var AVSpeechSynthesisVoice = plus.ios.import("AVSpeechSynthesisVoice");
    var speech = new AVSpeechSynthesizer();
    var voice = AVSpeechSynthesisVoice.voiceWithLanguage("zh-CN");
    var utterance = AVSpeechUtterance.speechUtteranceWithString(text);
    //utterance.plusSetAttribute("rate",30.1);
    utterance.setVoice(voice);
    speech.speakUtterance(utterance);

    2018-07-20 18:01

  • 85669082@qq.com

    上面这段代码IOS可以在后台播报吗?

    2018-07-27 08:42

836890151@qq.com

836890151@qq.com

怎么监听播放完毕

836890151@qq.com

836890151@qq.com

怎么监听播放完毕

苛学加

苛学加

mark

要回复问题请先登录注册