gpt4 book ai didi

ios - 如何使用 iOS 版 Nuance Vocalizer、Speechkit 2 检测语音结束

转载 作者:行者123 更新时间:2023-11-30 13:17:06 24 4
gpt4 key购买 nike

我正在使用 Nuance 的 Speechkit 2 和 swift、iOS 9.3。根据此文档,我需要检测 TTS 何时完成:

https://developer.nuance.com/public/Help/DragonMobileSDKReference_iOS/Speech-synthesis.html

...以下是可用于 TTS 的 3 种委托(delegate)方法:

// 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,并且在代码中我看到了此委托(delegate)方法,但它永远不会触发:

func audioPlayer(player: SKAudioPlayer!, willBeginPlaying audio: SKAudio!) {
log("willBeginPlaying")
// The TTS Audio will begin playing.
}

我正在调用 TTS:

var skTransaction = skSession!.speakString("a long sentence here",withLanguage: "eng-USA",delegate: self)

但是,“didFinishWithSuggestion”总是在 TTS 语音说完之前很久就会触发,这对我来说似乎是一个错误。Nuance 技术支持不会回复,有人可以帮助我吗?谢谢。

最佳答案

我找到了解决方案。事实证明,第二个委托(delegate)负责检测 TTS 播放的开始和结束:

class ViewController: UIViewController, SKAudioPlayerDelegate{
//All your view controller code here...

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

这些是委托(delegate)方法:

func audioPlayer(player: SKAudioPlayer!, willBeginPlaying audio: SKAudio!){
print("Starting TTS")
}
func audioPlayer(player: SKAudioPlayer!, didFinishPlaying audio: SKAudio!) {
print("TTS FINISHED")
}

关于ios - 如何使用 iOS 版 Nuance Vocalizer、Speechkit 2 检测语音结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38104248/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com