gpt4 book ai didi

objective-c - NSSpeechSynthesizer 中可能存在错误?

转载 作者:行者123 更新时间:2023-12-03 17:05:57 26 4
gpt4 key购买 nike

我正在编写一个 OS X 应用程序,它使用 NSSpeechSynthesizer 向用户读取文本,并在文本字段 (NSTextView) 中突出显示正在读取的单词。这是通过实现 NSSpeechSynthesizerDelegate 协议(protocol)的 speechSynthesizer:willSpeakWord:ofString: 方法来完成的。此方法提供了即将说出的单词的范围 (NSRange),我将其转发给 NSTextView 的 setSelectedRange 方法。

一切都很好,直到我使用 stopSpeaking 方法停止阅读。如果我将其设置为在此之后再次读取,则由 speechSynthesizer:willSpeakWord:ofString: 提供的范围似乎不同步。它似乎在调用 speechSynthesizer:willSpeakWord:ofString: 时犹豫了几秒钟,导致最终调用时范围有点落后于语音。

我编写了一个简单的应用程序来说明该问题,可以在此处找到: http://dl.dropbox.com/u/12516679/SpeechTest.zip

我希望有人会查看这段代码(它确实很简单),并确认这确实是一个错误,或者(希望)告诉我我做错了什么。

- 更新-

事实证明,问题出现在非英语语音上。我最初使用的是 Ida,这是丹麦语的声音。我现在已经用许多不同的声音对其进行了测试,我可以确认它适用于所有英语声音。然而,它与丹麦语、瑞典语、挪威语和荷兰语不同步。它可能也会影响其他语言,但这些是我迄今为止测试过的语言。

最佳答案

好的,我已经找到问题的根源和解决方法了。这与语言本身无关,但事实上 OS X Lion 中的大多数非英语语音都是 Nuance 语音(由 Nuance Communications 制作)。我通过英语 Nuance 语音测试证实了这一点,他们确实有同样的问题。 Nuance 提供的语音 api 似乎有问题。我通过在读取停止后实例化一个新的 NSSpeechSynthesizer 对象来解决该问题。虽然不漂亮,但很管用:)

关于objective-c - NSSpeechSynthesizer 中可能存在错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8520662/

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