2012-03-30 13 views
38

Los dispositivos iOS tienen sintetizadores de voz incorporados para la función VoiceOver de Accessibility. ¿Hay alguna forma de que pueda usar estos sintetizadores programáticamente para generar sonidos basados ​​en texto?¿Cómo se usan los sintetizadores de voz iOS mediante programación? (texto a voz)

Mi problema es: estoy trabajando en una aplicación simple para que los niños aprendan colores y en lugar de grabar los nombres de los colores en cada idioma que quiero admitir y almacenarlos como archivos de audio, prefiero generar el suena en tiempo de ejecución con alguna característica de texto a voz.

Gracias

[EDIT: Esta pregunta se hizo pre-iOS7 por lo que realmente debería considerar la respuesta votado e ignorar los mayores, a menos que usted es un arqueólogo de software]

Respuesta

61

A partir de iOS 7, Apple ofrece this API .

Ver this answer.

Objective-C

#import <AVFoundation/AVFoundation.h> 
… 
AVSpeechUtterance *utterance = [AVSpeechUtterance 
          speechUtteranceWithString:@"Hello World!"]; 
AVSpeechSynthesizer *synth = [[AVSpeechSynthesizer alloc] init]; 
[synth speakUtterance:utterance]; 

Swift

import AVFoundation 
… 
let utterance = AVSpeechUtterance(string: "Hello World!") 
let synth = AVSpeechSynthesizer() 
synth.speakUtterance(utterance) 
+0

¿Podemos guardar la voz pronunciada como un archivo mp3? –

+0

@Onato ¿Cómo puedo detenerme en texto a voz? – ShreePool

4

Desafortunadamente IOS no expone una API pública para generar voz programáticamente.

Hay un private API que puede utilizar, si no se está enviando a la tienda de aplicaciones.

De lo contrario, consulte las respuestas a this question para ver una serie de bibliotecas de terceros que puede usar.

+7

Vamos a desear que la gente de Apple venga aquí y lea esto como una solicitud de "por favor haga la api-pública";) –

+1

Apple no presta ninguna atención, incluso a las solicitudes directamente publicadas, así que no espero demasiado :( – MrTJ

+7

de hecho, Apple lo hizo. :) –

0

usted podría encontrar útil esta información Making Your iPhone Application Accessible

Como se indica en “Accesibilidad iPhone API y herramientas,” controles UIKit estándar y las vistas son accesibles automáticamente. Si usa solo controles UIKit estándar, probablemente no tenga que hacer mucho trabajo adicional para asegurarse de que su aplicación sea accesible. En este caso, el siguiente paso es garantizar que la información de atributo predeterminada suministrada por estos controles tenga sentido en su aplicación. “Suministro preciso y útil información de atributos” para aprender cómo hacer esto, ver

11
#import <AVFoundation/AVFoundation.h> 

AVSpeechSynthesizer *av = [[AVSpeechSynthesizer alloc] init]; 
AVSpeechUtterance *utterance = [[AVSpeechUtterance alloc]initWithString:@"Text to say"]; 
[av speakUtterance:utterance]; 
+0

¿Podemos guardar la voz pronunciada en un archivo mp3? –

4

Este código trabajó para mí con Swift y iOS 8 tanto en simulador y el iPhone 6. Yo tenía que añadir la norma AVFoundation biblioteca:

import AVFoundation 

// ... 

func onSayMeSomething() { 
    let utterance = AVSpeechUtterance(string: "Wow! I can speak!") 
    utterance.pitchMultiplier = 1.3 
    utterance.rate = AVSpeechUtteranceMinimumSpeechRate * 1.5 
    let synth = AVSpeechSynthesizer() 
    synth.speakUtterance(utterance) 
} 
Cuestiones relacionadas