5

我正在使用 OpenEars FliteController 类将文本转换为语音。

我正在使用以下方法:

[self.fliteController say:@"我想让我的应用大声说出来的一句话。" withVoice :@"cmu_us_awb8k"];

在 withVoice: 之后可以输入的参数选项如下:

cmu_us_awb8k
cmu_us_rms8k
cmu_us_slt8k
cmu_time_awb
cmu_us_awb
cmu_us_kal
cmu_us_kal16
cmu_us_rms
cmu_us_slt

我用 withVoice 尝试了所有这些论点:

但是,我的客户对这些声音不满意。他告诉我这些都很快。所以,我需要一种使用 withVoice: 参数来减慢语音的方法。我该怎么做?有没有其他可用的语音?

4

2 回答 2

4

从 .911 版开始,速度/音高/方差转换现在是 OpenEars 的一项功能。您可以按如下方式使用它:

使用 FliteController 的以下属性更改声音的速度、音调和可变性:

duration_stretch // Duration of speech
target_mean // Average pitch of speech
target_stddev // Variance

例如,在发送此消息之前:

[self.fliteController say:@"我想让我的应用大声说出来的一句话。" withVoice:@"cmu_us_awb8k"];

您可以对 self.fliteController 进行以下设置:

self.fliteController.duration_stretch = 1.5; // Slow down the speed a bit
self.fliteController.target_mean = 1.2; // Raise the pitch
self.fliteController.target_stddev = 1.5; // Increase the variance

1.0 是默认值,0.0 是最小值,2.0 是可能的最大有用值(尽管您可以高于 2.0,但它可能不会成为有用的值)。

0.5 的 duration_stretch 将是 1.0 的两倍,2.0 的 duration_stretch 将是 1.0 速度的一半。2.0 的 target_mean 或 target_stddev 将使平均音高频率加倍或方差加倍,而 0.5 会将它们减少一半。

您不必设置或覆盖这些设置 - 如果您不使用它们,它们将被设置为语音的默认值。如果您想在覆盖它们后将它们恢复为默认值,只需将它们全部设置为 1.0:

self.fliteController.duration_stretch = 1.0; // Reset the speed
self.fliteController.target_mean = 1.0; // Reset the pitch
self.fliteController.target_stddev = 1.0; // Reset the variance
于 2011-06-23T12:04:49.377 回答
1

我相信这适用于 OpenEars。不知道如何在 OpenEars 中进行配置。但是你可以看看这个演示,它可以根据你的要求进行定制。就像您可以为声音设置音高/变化/速度一样。从链接克隆存储库。

如果您可以迁移到此,那将是您的解决方案。如果您对这个演示有任何疑问,我肯定可以提供帮助,因为我为 TextToSpeech 准备了 1 个带有播放/暂停/停止选项的演示。

希望能帮助到你。

于 2011-06-03T13:01:10.393 回答