ios ios7 avspeechsynthesizer

ios - AVSpeechSynthesizer la expresión al archivo de audio



ios7 (1)

Es posible grabar el audio generado por su aplicación (no desde otras aplicaciones). Aunque AVSpeech no proporciona una API para guardar el audio generado, Apple tiene otras API que pueden hacer el trabajo. La solución probablemente no sea tan limpia como le gustaría, pero debería funcionar.

Apple proporciona un marco denominado Audio Unit Framework para administrar el procesamiento y la grabación avanzados de audio. Este es el único Framework en el SDK de iOS (que yo sepa) que puede reproducir y grabar audio simultáneamente. La guía de alojamiento de la unidad de audio parece prometedora, al igual que la aplicación de ejemplo Audio Mixer .

Nota: no he intentado usar el Audio Unit Framework con AVSpeechSynthesizer (puede o no funcionar). Sin embargo, considerando que AVSpeechSynthesizer juega bien con CoreAudio, entonces es más que probable que funcione con AudioUnits.

Si la solución anterior no funciona, entonces una solución simple puede hacer el truco. AVSpeechSynthesizer no requiere ninguna conexión de red para funcionar correctamente, por lo que en muchos casos es posible que no necesite guardar el audio. En su lugar, puede guardar el texto para usarlo posteriormente con NSFileManager:

NSString *textToSynthesize = @"Just what do you think you are doing, Dave?"; NSError *error; NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths firstObject]; [textToSynthesize writeToFile:[documentsDirectory stringByAppendingPathComponent:@"synthText.txt"] atomically:YES encoding:NSUTF8StringEncoding error:&error];

Cuando esté listo para sintetizar el texto, simplemente AVSpeechSynthesizer del archivo y vuelva a AVSpeechSynthesizer al AVSpeechSynthesizer . Me doy cuenta de que esta solución no funcionará ni se aplicará en todos los casos (por ejemplo, si necesita enviar el archivo de audio a alguien).

Estas son solo algunas de las posibles soluciones para el problema, las cuales son soluciones alternativas y pueden o no funcionar según su situación específica. YMMV. ¡Buena suerte!

Estoy usando AVSpeechSynthesizer en mi aplicación y busco guardar el texto hablado en un archivo de audio o AVAsset. Revisé los documentos de Apple y no vi nada, pero me di cuenta de que publicaría una pregunta para asegurarme. A continuación se muestra mi código actual.

AVSpeechUtterance * utterance = [AVSpeechUtterance speechUtteranceWithString:textView.text]; float rate = [speedSlider value]/1.5; utterance.rate = rate; [speechSynthesizer speakUtterance:utterance];