2011-05-25 8 views
12

Mi propósito es que pueda permitir que mi aplicación hable en un lenguaje menos popular (por ejemplo, Hokkien, malayo, etc.). Mi enfoque actual es usar mp3 grabado.Caracteres fonéticos para hablar

Quiero saber si existe el motor de "caracteres fonéticos para hablar" para .net o cualquier plataforma?

Caracteres fonéticos aquí al igual que la entrada fonética en el diccionario de papel. ¿Alguna idea?

+0

Ok, una cosa que podría no funcionar muy bien con este enfoque es que el lenguaje es mucho más complicado que solo una serie de sonidos "pregrabados". Por ejemplo, los lenguajes de tono como el chino realmente apestan. –

Respuesta

6

Este es el código VB.NET:

'create the object. This object will store your phonetic 'characters' 
Dim PBuilder As New System.Speech.Synthesis.PromptBuilder 

'add your phonetic 'characters' here. Just ignore the first parameter. 
'The second parameter is your phonetic 'characters' 
PBuilder.AppendTextWithPronunciation("test", "riːdɪŋ") 

'now create a speaker to speak your phonetic 'characters' 
Dim SpeechSynthesizer2 As New System.Speech.Synthesis.SpeechSynthesizer 

'now actually speaking. It will speak 'reading' 
SpeechSynthesizer2.Speak(PBuilder) 

Y aquí está el convertida código C#:

//create the object. This object will store your phonetic 'characters' 
System.Speech.Synthesis.PromptBuilder PBuilder = new System.Speech.Synthesis.PromptBuilder(); 

//add your phonetic 'characters' here. Just ignore the first parameter. 
//The second parameter is your phonetic 'characters' 
PBuilder.AppendTextWithPronunciation("test", "riːdɪŋ"); 

//now create a speaker to speak your phonetic 'characters' 
System.Speech.Synthesis.SpeechSynthesizer SpeechSynthesizer2 = new System.Speech.Synthesis.SpeechSynthesizer(); 

//now actually speaking. It will speak 'reading' 
SpeechSynthesizer2.Speak(PBuilder); 
+0

por lo que este sistema tts concatenará los teléfonos juntos y leerá la forma de onda resultante? ¿Es eso lo que hará? – Sriram

+0

@Sriram: Simplemente coloque cualquier 'carácter' fonético y si esos 'caracteres' fonéticos son pronunciables, entonces la llamada al sistema lo pronunciará. Por favor, consulte .Net SDK para más detalles. – user774411

10

Lo que necesita es un motor de TTS de gran vocabulario. Microsoft tiene un speech SDK que le permite decir mientras escribe entre otras cosas, y también el Windows SAPI (Speech API: no estoy seguro si el SDK y la API son las mismas cosas). Sé que tienen voces masculinas y femeninas para inglés, pero tal vez no para otros idiomas como el malayo (donde puede que aún no haya habido mucho mercado). Es posible que desee echar un vistazo a Festival Project at CMU. Por lo general, tienen muchas voces en diferentes idiomas, pero algunas de las menos conocidas pueden no estar tan bien desarrolladas como las de inglés.

actualizarse una vez más:
Comprobar la MBROLA site a cabo. Es un proyecto de código abierto para desarrollar motores multilingües TTS de gran vocabulario y también tienen una extensión malaya. Sin embargo, no sé lo bueno que es. Probé el hindi y siento que todavía queda mucho por hacer.

Además, consulte BabelFish site. Tienen enlaces a muchos motores TTS gratuitos que deberían tener cierto soporte para malayo.

Actualización 3: no sé si esto va a adaptarse a su propósito, pero si el texto que la aplicación debe hablar es baja, entonces usted puede probar durante un concatenative speech synthesislimited vocabulary también. Grabe fragmentos de oraciones en malayo (o cualquier otro idioma) y pase la salida de su programa a su propio motor de vocabulario limitado donde crea la salida. Un ejemplo podría ser (en inglés): "fue el jugador más valioso". Aquí, "era el jugador más valioso" se convierte en un fragmento mientras que el "Jugador X" se puede cambiar a voluntad. Esto, si cumple con su propósito, debería funcionar bien.

5

Quizás esto? System.Speech.Recognition.SrgsGrammar.SrgsPhoneticAlphabet

6

La clase .Net System.Speech.Synthesis.PromptBuilder creará audio a partir de cadenas SSML. Puede usarlos para construir sonidos a partir de fonemas en bruto y audio muestreado. El audio no depende del idioma.

3

He probado el System.Speech.Synthesis.PromptBuilder. Y debo decir que la implementación actual de los caracteres fonéticos es muy elemental y no precisa. Por ejemplo, el PromptBuilder carece de la entonación del habla y la falta de énfasis en el estrés en una palabra. PromptBuilder solo puede emitir sonido monótono y robótico que es muy molesto.

Mi recomendación es que siga usando su enfoque actual. Usar mp3 para enviar mensajes es más natural y rentable en términos de tiempo requerido para traducir los caracteres fonéticos perfectos de su discurso.

Cuestiones relacionadas