2012-04-06 67 views
7

Hice esta pregunta on SuperUser, pero ha caído en saco roto. Espero poder tener más audiencia aquí.Software de texto a voz (TTS) para scripts Salida WAV o MP3

Estoy buscando una solución de bajo costo (o gratuito) como ScriptVox solo con un motor mejor. Es decir, leer en un guión y asignar personajes a la voz. He leído la publicación here pero incluso con esas tendré que concatenar archivos wav. No es que no ame a Audacity, pero lleva mucho tiempo. Estoy a medio camino de escribir el mío, pero estoy seguro de que tiene que haber una solución. ¿Alguna sugerencia?

+0

¿Qué lenguajes de programación conoce? – Brad

+0

Tenía la esperanza de encontrar algo ya escrito. Soy un mono de código y he estado programando desde que BASIC tenía números de línea. Sin embargo C# es lo que me pagan para desarrollar. – SQLMason

+1

ver mi publicación. Hay una solución VB que puedes adaptar fácilmente a .NET. Si quieres algo que ya está escrito, entonces querrás buscar en otro lado. Stack Overflow es para preguntas de programación. – Brad

Respuesta

3

Si tiene acceso al programa de internet es aceptable, entonces puede usar iSpeech.

Puede usar su API, pero desafortunadamente está limitado a 200 usos/día.

Su API también permite agregar format=(wav|mp3) después de una consulta, lo que le permite obtener su sonido en los dos formatos deseados.

+1

C# puede acceder a DirectShow a través de COM o utilizar otra biblioteca .NET. – quantum

+0

Respuesta elegida por su integridad y fue exclusiva para mí (sé que el motor Text-to-Speech de Microsoft) – SQLMason

10

me gustaría utilizar el motor de texto a voz de Microsoft. Tienen un ejemplo sencillo de cómo hacer exactamente lo que está buscando:

http://msdn.microsoft.com/en-us/library/ms717065(v=vs.85).aspx

Con ese código de ejemplo, se puede hablar algo de texto y tienen que volcarse en un archivo WAV. A partir de ahí, si necesita convertir a un formato como MP3, puede usar FFMPEG.

5

Brad's answer es bastante fantástico, ya que contiene exactamente lo que estás buscando. Sin embargo,, falta un fundamento por el que haya expresado una preferencia en la pregunta errata: una implementación en C#.

Here's a full tutorial para obtener acceso a Speech API en código administrado. Con el crédito a Blake Niemyjski y los equipos apropiados de Microsoft, aquí están los trozos salientes, debido a que el LinkBack al artículo original está muerta y esto parece estar tomado de Microsoft directamente:

el siguiente enlace (Dar Ordenadores una Voice) lo llevará a un sitio de Microsoft que le mostrará cómo crear un proyecto y obtener una aplicación de texto a voz ejecutándose en VB .Net o C# en ningún momento !

SAPI

SAPI es la API de voz que da acceso a las aplicaciones de voz reconocimiento y motores de texto a voz (TTS). Este artículo se centra en TTS. Para TTS, SAPI toma el texto como entrada y usa el motor TTS a la salida que envía el texto como audio hablado. Esta es la misma tecnología utilizada por , la herramienta de accesibilidad de Windows, Narrador. Cada versión de Windows desde XP se envía con SAPI y un motor TTS en inglés.

TTS pone a trabajar a los oídos de los usuarios. Permite a las aplicaciones enviar información al usuario sin requerir la vista ni las manos del usuario. Esta es una opción de salida muy poderosa que no se utiliza a menudo en las PC .

Se necesitan tres pasos para utilizar TTS en una aplicación administrada:

  1. Crear una DLL de interoperabilidad

Desde SAPI es un componente COM, se necesita una DLL de interoperabilidad a usarlo desde una aplicación administrada Para crear esto, abra el proyecto en Visual Studio. Seleccione el menú Proyecto y haga clic en Agregar referencia. Seleccione la pestaña COM, seleccione "Biblioteca de objetos de Microsoft Speech" en la lista y haga clic en Aceptar. Estos pasos agregan esta referencia a su proyecto y crean un Interop.SpeechLib.dll en la misma carpeta que su ejecutable. Esta DLL de interoperabilidad debe estar siempre en la misma carpeta que su .exe para funcionar correctamente en .

  1. referencia el espacio de nombres de interoperabilidad

Incluir este espacio de nombres en su aplicación. En C#, agregue "usando SpeechLib;"; En VB, agregue "Imports SpeechLib".

  1. llamada Hablar()

crear un objeto SpVoice y llamar Hablar():

Visual C#

SpVoice voice = new SpVoice(); 
voice.Speak("Hello World!", SpeechVoiceSpeakFlags.SVSFDefault); 

Visual Basic

voice = New SpVoice 
voice.Speak("Hello World!", SpeechVoiceSpeakFlags.SVSFDefault) 

Siento que la respuesta de Brad me llevó a la solución correcta aquí (por lo tanto, es más merecedor de crédito que yo), pero esta debería ser la última pieza que te faltaba. Ahora debería poder replicar la escritura del archivo WAV desde C++ solution en código administrado, y desde allí, transcode en el formato deseado.

Cuestiones relacionadas