Objective c 如何查找';费率';语音合成器的性能?

Objective c 如何查找';费率';语音合成器的性能?,objective-c,macos,cocoa,speech-synthesis,Objective C,Macos,Cocoa,Speech Synthesis,我有一个OSX应用程序,它使用NSSpeechSynthesizer类来阅读一些文本。我需要能够设置读取速度,这是使用NSSpeechSynthesizer的rate属性完成的。然而,不同的声音有不同的基线阅读率和不同的范围。问题是,我无法找到一种方法从语音中获取该范围,以便知道语音可以接受哪些值。这一点很重要,因为我希望能够从范围的差异中抽象出来,让用户选择慢速/正常/快速。但对于一分钟内基线为180个单词的声音,100的值将被视为缓慢,而对于一分钟内基线为100个单词的声音,情况显然并非如此

我有一个OSX应用程序,它使用
NSSpeechSynthesizer
类来阅读一些文本。我需要能够设置读取速度,这是使用
NSSpeechSynthesizer
rate
属性完成的。然而,不同的声音有不同的基线阅读率和不同的范围。问题是,我无法找到一种方法从语音中获取该范围,以便知道语音可以接受哪些值。这一点很重要,因为我希望能够从范围的差异中抽象出来,让用户选择慢速/正常/快速。但对于一分钟内基线为180个单词的声音,100的值将被视为缓慢,而对于一分钟内基线为100个单词的声音,情况显然并非如此


有没有办法获得这些范围?我在
NSSpeechSynthesizer

的类参考中没有发现任何有用的东西。我知道这不是你一直在寻找的答案,但据我所知,苹果公司还没有向公众提供一种改变NSSpeechSynthesizer对象实例基线速度的方法(正如你所说,它有一个“速率”的例子,但它不能为每个不同的声音提供恒定的速率)。为此,我知道你不会喜欢它,你必须让较慢的声音变快,较快的声音变慢,直到它们接近匹配。再次抱歉,但据我所知,苹果没有提供一种改变基线速率的方法。祝你编码愉快


~Monkeyanator

好吧,我知道这不是你一直在寻找的答案,但据我所知,苹果还没有向公众提供一种方法来改变NSSpeechSynthesizer对象实例的基线速度(正如你所说,它有一个“速率”实例,但它不能为每个不同的声音提供恒定速率).对于这个,我知道你不会喜欢的,你必须让慢一点的快一点,快一点的慢一点,直到他们接近匹配。再次抱歉,但据我所知,苹果没有提供改变基准速率的方法。编码快乐


~Monkeyanator

您可以在更改语音之前获得语音的速率,并且可以估计可接受的范围是默认速率±50 WPM或其他值


也就是说,如果你用它来设置滑块,我会提醒你不要将用户限制为“自然”-声音范围。一些人,包括许多盲人,故意尽可能快地将声音调高,以节省听音时间。

在更改声音之前,您可以获得声音的频率,并且您可以估计可接受的范围是默认频率±50 WPM或其他


也就是说,如果你用它来设置滑块,我会提醒你不要将用户限制为“自然”-声音范围。有些人,包括许多盲人,故意把声音调高到他们能站的最快速度,以节省听音时间。

你说你的问题是因为不同的声音,你不能让声音保持恒定的频率吗?所以我想你必须有不同的声音?你可以随时使用yo你自己的自定义NSVoice对象,并赋予它与其他对象相同的属性,只需将速率设置为常量。在对象中使用这些属性,代码就会运行良好。虽然你是正确的,但应该有一种方法来设置基线文本读取速度:(好吧,我可以为所有语音设置相同的速率(以每分钟的单词数表示),但那是不对的。问题是,人们说话的速度不同,所以一个人的自然语速不同(合成语音也是如此)。因此,我的慢速/正常/快速值需要与基线相对。我可能会将慢速设置为正常速度的一半,将快速设置为两倍,看看这是否有意义。您是否说您的问题是,由于不同的声音,您无法使声音保持恒定速率?因此我认为您必须有不同的声音?您可以始终使用自己的自定义NSVoice对象,并为其赋予与其他对象相同的属性,只需将速率设置为常量。在对象中使用这些属性,代码就会运行良好。虽然您是正确的,但应该有一种方法来设置基线文本读取速度:(嗯,我可以为所有语音设置相同的速率(以每分钟的话数计算),但那是不对的。问题是,人们说话的速度不同,所以一个人的自然语速也不同(合成语音也是如此)。因此,我的慢速/正常/快速值需要与基线相对。我可能会将慢速设置为正常速度的一半,将快速设置为两倍,看看是否有意义。只需注意,如果速率很快,比如说220,并且将其设置为低于范围,比如50,它将继续以快速速率说话,而不是以最低可用速率说话e另一个方向。我在实验中发现,基本速率是180 wpm,最低速率是90 wpm,最高速率大约是700左右。可能0.5到4倍是安全范围。请注意,如果速率很快,比如说220,而你将其置于范围以下,比如50,它将继续以快速速率说话,而不是以最低可用速率说话,比如我在实验中发现基本速率是180 wpm,最低是90 wpm,最高是700左右。可能0.5到4倍是安全范围。