Save text to audio file programmatically

You can save the text as an audio file, as shown in the screenshot. My question now is how to do the same thing programmatically. enter image description here

Any help is greatly appreciated.

+5
source share
2 answers

NSSpeechSynthesizer does the job.

Let's say that we have a property:

 @property NSSpeechSynthesizer *synth; 

which we initialize as follows:

 synth = [[NSSpeechSynthesizer alloc] initWithVoice:nil]; 

we can do it:

 NSURL *saveURL = [NSURL fileURLWithPath:[@"~/Desktop/SpokenText.aiff" stringByExpandingTildeInPath]]; [synth startSpeakingString:@"A spoken short text" toURL:saveURL]; 

Before saving, we probably want to change the voice or volume:

 [synth setVolume:0.5f]; [synth setVoice:voiceID]; 

where value for volume is expressed in units of floating point in the range from 0.0 to 1.0 and voiceID is voice identifier .




To view all available voice identifiers:

 NSArray *voiceIdentifiers = [NSSpeechSynthesizer availableVoices]; NSLog(@"%li %@",voiceIdentifiers.count,voiceIdentifiers); 

Output to OS X 10.10.3 with all installed voices:

 101 ( "com.apple.speech.synthesis.voice.Agnes", "com.apple.speech.synthesis.voice.Albert", "com.apple.speech.synthesis.voice.Alex", "com.apple.speech.synthesis.voice.alice.premium", "com.apple.speech.synthesis.voice.allison.premium", "com.apple.speech.synthesis.voice.alva.premium", "com.apple.speech.synthesis.voice.amelie.premium", "com.apple.speech.synthesis.voice.angelica.premium", "com.apple.speech.synthesis.voice.anna.premium", "com.apple.speech.synthesis.voice.audrey.premium", "com.apple.speech.synthesis.voice.aurelie.premium", "com.apple.speech.synthesis.voice.ava.premium", "com.apple.speech.synthesis.voice.BadNews", "com.apple.speech.synthesis.voice.Bahh", "com.apple.speech.synthesis.voice.Bells", "com.apple.speech.synthesis.voice.Boing", "com.apple.speech.synthesis.voice.Bruce", "com.apple.speech.synthesis.voice.Bubbles", "com.apple.speech.synthesis.voice.carlos.premium", "com.apple.speech.synthesis.voice.carmit.premium", "com.apple.speech.synthesis.voice.catarina.premium", "com.apple.speech.synthesis.voice.Cellos", "com.apple.speech.synthesis.voice.cem.premium", "com.apple.speech.synthesis.voice.chantal.premium", "com.apple.speech.synthesis.voice.claire.premium", "com.apple.speech.synthesis.voice.damayanti.premium", "com.apple.speech.synthesis.voice.daniel.premium", "com.apple.speech.synthesis.voice.Deranged", "com.apple.speech.synthesis.voice.diego.premium", "com.apple.speech.synthesis.voice.ellen.premium", "com.apple.speech.synthesis.voice.ewa.premium", "com.apple.speech.synthesis.voice.federica.premium", "com.apple.speech.synthesis.voice.felipe.premium", "com.apple.speech.synthesis.voice.fiona.premium", "com.apple.speech.synthesis.voice.Fred", "com.apple.speech.synthesis.voice.GoodNews", "com.apple.speech.synthesis.voice.henrik.premium", "com.apple.speech.synthesis.voice.Hysterical", "com.apple.speech.synthesis.voice.ioana.premium", "com.apple.speech.synthesis.voice.iveta.premium", "com.apple.speech.synthesis.voice.joana.premium", "com.apple.speech.synthesis.voice.jorge.premium", "com.apple.speech.synthesis.voice.juan.premium", "com.apple.speech.synthesis.voice.Junior", "com.apple.speech.synthesis.voice.kanya.premium", "com.apple.speech.synthesis.voice.karen.premium", "com.apple.speech.synthesis.voice.kate.premium", "com.apple.speech.synthesis.voice.Kathy", "com.apple.speech.synthesis.voice.katya.premium", "com.apple.speech.synthesis.voice.klara.premium", "com.apple.speech.synthesis.voice.kyoko.premium", "com.apple.speech.synthesis.voice.laura.premium", "com.apple.speech.synthesis.voice.lee.premium", "com.apple.speech.synthesis.voice.lekha.premium", "com.apple.speech.synthesis.voice.luca.premium", "com.apple.speech.synthesis.voice.luciana.premium", "com.apple.speech.synthesis.voice.magnus.premium", "com.apple.speech.synthesis.voice.mariska.premium", "com.apple.speech.synthesis.voice.markus.premium", "com.apple.speech.synthesis.voice.mei-jia.premium", "com.apple.speech.synthesis.voice.melina.premium", "com.apple.speech.synthesis.voice.milena.premium", "com.apple.speech.synthesis.voice.moira.premium", "com.apple.speech.synthesis.voice.monica.premium", "com.apple.speech.synthesis.voice.nicolas.premium", "com.apple.speech.synthesis.voice.nikos.premium", "com.apple.speech.synthesis.voice.nora.premium", "com.apple.speech.synthesis.voice.oliver.premium", "com.apple.speech.synthesis.voice.oskar.premium", "com.apple.speech.synthesis.voice.otoya.premium", "com.apple.speech.synthesis.voice.paola.premium", "com.apple.speech.synthesis.voice.paulina.premium", "com.apple.speech.synthesis.voice.petra.premium", "com.apple.speech.synthesis.voice.Organ", "com.apple.speech.synthesis.voice.Princess", "com.apple.speech.synthesis.voice.Ralph", "com.apple.speech.synthesis.voice.samantha.premium", "com.apple.speech.synthesis.voice.sara.premium", "com.apple.speech.synthesis.voice.satu.premium", "com.apple.speech.synthesis.voice.serena.premium", "com.apple.speech.synthesis.voice.sin-ji.premium", "com.apple.speech.synthesis.voice.soledad.premium", "com.apple.speech.synthesis.voice.susan.premium", "com.apple.speech.synthesis.voice.tarik.premium", "com.apple.speech.synthesis.voice.tessa.premium", "com.apple.speech.synthesis.voice.thomas.premium", "com.apple.speech.synthesis.voice.ting-ting.premium", "com.apple.speech.synthesis.voice.tom.premium", "com.apple.speech.synthesis.voice.Trinoids", "com.apple.speech.synthesis.voice.veena.premium", "com.apple.speech.synthesis.voice.Vicki", "com.apple.speech.synthesis.voice.Victoria", "com.apple.speech.synthesis.voice.Whisper", "com.apple.speech.synthesis.voice.xander.premium", "com.apple.speech.synthesis.voice.yannick.premium", "com.apple.speech.synthesis.voice.yelda.premium", "com.apple.speech.synthesis.voice.yuna.premium", "com.apple.speech.synthesis.voice.yuri.premium", "com.apple.speech.synthesis.voice.Zarvox", "com.apple.speech.synthesis.voice.zosia.premium", "com.apple.speech.synthesis.voice.zuzana.premium" ) 
+3
source

Starting with iOS 7, Apple provides the following API ...

https://developer.apple.com/library/ios/documentation/AVFoundation/Reference/AVSpeechSynthesizer_Ref/Reference/Reference.html

See this answer fooobar.com/questions/139378 / ...

 #import <AVFoundation/AVFoundation.h> โ€ฆ AVSpeechUtterance *utterance = [AVSpeechUtterance speechUtteranceWithString:@"Hello world"]; AVSpeechSynthesizer *synth = [[AVSpeechSynthesizer alloc] init]; [synth speakUtterance:utterance]; 
0
source

All Articles