2009-05-07 34 views
9

Tengo un programa que recibe una secuencia de bits de audio (mono) de TCP/IP. Me pregunto si la API de voz (reconocimiento de voz) en Mac OS X sería capaz de hacer una transformación de voz a texto para mí.API de voz a texto de Mac OS X. ¿Cómo?

(No me importa guardar el audio en .wav primero y leerlo como opuesto a hacer la transformación sobre la marcha).

He leído los documentos oficiales en línea, es un poco confuso. Y no pude encontrar ningún buen ejemplo sobre este tema.

Además, ¿debería hacerlo en Cocoa/Carbon/Java u Objective-C?

¿Alguien puede arrojar algo de luz?

Gracias.

Respuesta

6

Hay un número de ejemplos que se copian en/Developer/Examples/Speech/Recognition cuando instala XCode.

Clase de cacao para reconocimiento de voz es NSSpeechRecognizer. No lo he usado, pero hasta donde yo sé, el reconocimiento de voz requiere que desarrolles una gramática para ayudar al motor a elegir entre varias opciones en lugar de permitirte pasar entradas de forma libre. Todo esto se explica en los ejemplos mencionados anteriormente.

1

Aquí está un good O'Reilly article para comenzar.

+0

Gracias Charlie, ¿Tiene algún ejemplo de código? –

6

Esto llega un poco tarde quizás, pero voy a sonar de todos modos.

Las funciones de reconocimiento de voz en OS X (tanto del lado del carbono como del cacao) son para el reconocimiento de comandos de voz, lo que significa que reconocerán palabras (o frases, comandos) cargadas en el lenguaje del sistema de voz modelo. He hecho algunas cosas con diccionarios pequeños y funciona bastante bien, pero si quieres reconocer el habla arbitraria, las cosas pueden volverse más peludas.

Otra cosa a tener en cuenta es que la funcionalidad que proporcionan las API de voz en OS X no es una a una. El material Carbon proporciona una funcionalidad que no ha llegado al NSSpeechRecognizer (los documentos hacen mención de esto).

No sé acerca de Cocoa, pero el Administrador de reconocimiento de voz de carbono le permite especificar entradas que no sean un micrófono para que una transmisión de sonido funcione bien.

1

Puede utilizar cualquiera de las SpeechSynthesis ApplicationServices (10.0+)

CFStringRef cfstr = CFStringCreateWithCString(NULL,"Hello World!", kCFStringEncodingMacRoman); 
Str255 pstr;  
CFStringGetPascalString(cfstr, pstr, 255, kCFStringEncodingMacRoman); 
SpeakString(pstr); 

o NSSpeechSynthesizer de AppKit (10.3+)

NSSpeechSynthesizer *synth = [[NSSpeechSynthesizer alloc] initWithVoice:@"com.apple.speech.synthesis.voice.Alex"]; 
[synth startSpeakingString:@"Hello world!"]; 
+0

Eso es para sintetizar el habla (texto a voz), sin reconocer el habla (voz a texto). –

+0

parece que quise decir esta respuesta para una pregunta diferente ... y ahora no puedo encontrar eso – valexa