Text to speech en iOS 7 con AVSpeechSynthesizer

Autor: | Última modificación: 20 de septiembre de 2023 | Tiempo de Lectura: 1 minutos
Temas en este post:

A falta de Siri o VoiceOver, para poder hacer escuchar y hablar nuestra app, buena es AVSpeechSynthesizer, una nueva clase del framework AVFoundation en iOS 7 que nos permite hacer el text to speech de una forma sencilla.

AVSpeechSynthesizer

Para hacer funcionar AVSpeechSynthesizer lo primero que necesitamos es crear una instancia de AVSpeechUtterance que contendrá el texto a ser hablado por el dispositivo. Con dicha clase también podremos controlar otras propiedades opciones como la velocidad o el tipo de voz (acento) entre otras. Para un funcionamiento básico bastaría con el siguiente código:

AVSpeechSynthesizer *synth = [AVSpeechSynthesizer new];

AVSpeechUtterance *utt = [[AVSpeechUtterance alloc] initWithString:@"Creando una instancia con new, a lo loco"];

[synth speakUtterance:utt];

Cuando enviamos el método speakUtterance el texto empezará a reproducirse inmediatamente, en caso de que hubiera algún texto siendo leído, permite encolar textos para ser leídos una vez finalice el actual. Podemos incluso darle unas pausas entre un texto y otro con las propiedades postUtteranceDelay preUtteranceDelay de la clase AVSpeechUtterance (que es la que va a contener el texto y las pijadas que le queramos poner).

Por supuesto podemos parar o pausar el speech con los métodos stopSpeakingAtBoundary o pauseSpeakingAtBoundary. Si nos suscribimos a su delegado, AVSpeechSynthesizerDelegate, seremos notificados cuando inicie, pare, reanude…