首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Nuance发声器( Speechkit 2 )检测用于iOS的语音结束

如何使用Nuance发声器( Speechkit 2 )检测用于iOS的语音结束
EN

Stack Overflow用户
提问于 2016-06-29 15:39:34
回答 1查看 500关注 0票数 0

我正在使用Nuance的Speechkit 2与斯威夫特,iOS 9.3。根据以下文档,Ineed用于检测TTS何时完成:

iOS/Speech-synthesis.html

...These是TTS可用的3种委托方法:

代码语言:javascript
复制
// SKTransactionDelegate
func transaction(transaction: SKTransaction!, didReceiveAudio audio: SKAudio!) { ... }
func transaction(transaction: SKTransaction!, didFinishWithSuggestion suggestion: String!) { ... }
func transaction(transaction: SKTransaction!, didFailWithError error: NSError!, suggestion: String!) { ... }

另外,下面是一个示例Swift项目(https://developer.nuance.com/public/index.php?task=prodDev),其中TTS示例使用了一个额外的SKAudioPlayerDelegate,在代码中我看到了这个委托方法,但是它从不触发:

代码语言:javascript
复制
func audioPlayer(player: SKAudioPlayer!, willBeginPlaying audio: SKAudio!) {
        log("willBeginPlaying")
        // The TTS Audio will begin playing.
    }

我打电话给TTS的目的是:

代码语言:javascript
复制
var skTransaction = skSession!.speakString("a long sentence here",withLanguage: "eng-USA",delegate: self)

然而,"didFinishWithSuggestion“总是在TTS语音结束之前就触发了,这对我来说似乎是个bug。细微的技术支持不会回答,有人能帮我吗?谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-05 13:06:32

我找到了解决办法。事实证明,第二个委托负责检测TTS回放的开始和结束:

代码语言:javascript
复制
class ViewController: UIViewController, SKAudioPlayerDelegate{
    //All your view controller code here...

    func viewDidLoad(){
       //more init. code 
       skSession!.audioPlayer.delegate=self
   }
}

这些是委托方法:

代码语言:javascript
复制
func audioPlayer(player: SKAudioPlayer!, willBeginPlaying audio: SKAudio!){
  print("Starting TTS")
}
func audioPlayer(player: SKAudioPlayer!, didFinishPlaying audio: SKAudio!) {
   print("TTS FINISHED")
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38104248

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档