Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to slow down voices using withVoice: argument in FliteController class?

I am using the OpenEars FliteController class to convert text to speech.

I am using the method:

[self.fliteController say:@"A phrase I'd like my app to speak out loud." withVoice:@"cmu_us_awb8k"];

The options for arguments one can enter after withVoice: are as follows:

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

I tried all of these arguments with withVoice:

However, my client is not happy with the voices. He told me these all are fast. So, I need a way to slow down speech using the withVoice: argument. How can I do it? Are there any other speech voices available?

like image 513
Vipin Avatar asked Jun 03 '11 12:06

Vipin


1 Answers

Speed/pitch/variance shift is now a feature of OpenEars as of version .911. You can use it as follows:

Change the speed, pitch and variability of a voice by using the following properties of FliteController:

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

For instance, right before sending this message:

[self.fliteController say:@"A phrase I'd like my app to speak out loud." withVoice:@"cmu_us_awb8k"];

You could make the following settings to 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 is the default, 0.0 is the minimum value and 2.0 is a likely maximum useful value (although you can go higher than 2.0, it probably isn't going to be a useful value).

A duration_stretch of .5 will be twice as fast as 1.0, a duration_stretch of 2.0 will be half the speed of 1.0. A target_mean or target_stddev of 2.0 will double the average pitch frequency or double the variance, while 0.5 will reduce them by half.

You do not have to set or override these settings — if you don’t use them, they will be set to the defaults for the voice. If you want to return them to the defaults after overriding them, simply set them all to 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
like image 189
Halle Avatar answered Sep 24 '22 13:09

Halle