2009-06-06 15 views
10

Quiero escribir una aplicación que cambie la voz de entrada de micrófono y que sea como un robot o una voz de hombre graciosa. Debe admitir el envío de una voz cambiada a todas las aplicaciones, como IM Software o Game Client. ¿Qué tecnología debería recoger? Windows WaveForm Api? DirectX? controlador de audio?¿Cómo implementar un cambiador de voz?

¡Muchas gracias!

+0

Kevin - es este un proyecto comercial? – billmcc

+0

Eso depende. No estoy seguro ahora. –

Respuesta

0

Ahora que es una buena idea, especialmente para una aplicación móvil.

Probablemente comenzaría fuera de línea utilizando un archivo .wav como entrada para que los efectos funcionen como yo quería. Puedes usar cualquier lenguaje de alto nivel para esto, pero probablemente quieras algo que se relacione razonablemente bien con C/C++.

En términos de una versión de producción, me gustaría volverme nativo y hacer esto en C o C++. Desea algo rápido para el procesamiento de audio en tiempo real & Me gusta evitar dependencias en cosas como .net para la distribución. (No es que tenga nada en contra de .net, es genial para servidores y distribución dentro de una compañía, pero no estoy tan interesado en tenerlo como una dependencia para el software de contracción).

Windows DirectShow sería una opción tentadora - podría hacer algunos efectos interesantes con multimedia también si tuviera el Morpher de voz implementado como un filtro de show directo.

+0

¡Eres un experto! –

0

Lo que estás buscando es un vocoder. No sé si alguna de las tecnologías enumeradas anteriormente tiene un efecto de vocoder, pero la mejor posibilidad sería con DirectX.

+0

Muchas gracias. –

7

Hay un MSDN Coding4Fun article que explica cómo crear un cambiador de voz que opera a través de Skype, en C# (.NET). El código fuente completo también se aloja como un proyecto en CodePlex. Además, debería ser bastante fácil hacer algo más con el audio (en lugar de transmitirlo a través de Skype), ya que el proyecto se basa en el marco NAudio, que contiene un buen nivel de abstracción. De todos modos, es un ejemplo razonablemente completo (y estable), definitivamente vale la pena revisarlo en mi opinión.

Si quiere/necesita usar C++ o algún otro lenguaje para el desarrollo, entonces este proyecto al menos le dará algunas ideas sobre cómo hacerlo. Aún así, si puedes usar .NET, entonces estás de suerte, creo.

+2

Muchas gracias. –

1

Está buscando admitir complementos VSTi o DXi.
Hay toneladas que también actúan como vocoders, incluso de forma gratuita.
Solo necesita escribir la aplicación host. Eche un vistazo here :)

+0

Muchas gracias. –

+0

No hay problema. Acepta la respuesta correcta por cierto. Me gustaría saber quién crees que es correcto. –

3

La voz de robot a menudo se hace con un efecto ring modulator, mezclando la voz con una onda sinusoidal - esto es más fácil. O use un efecto vocoder, modulando la voz en alguna otra forma de onda, como el rectángulo, podría ser un poco más complicado. Ve a leer cómo funcionan los efectos, obtén un programa con el que puedes comprobar cómo suenan (Audacity funciona para el modulador en anillo, encontrar y usar un vocoder puede ser un poco más difícil). Luego lea cómo se hace o obtenga una biblioteca que hará el procesamiento por usted.

+0

Muchas gracias. –

0

Pruebe esta aplicación de muestra. Creo que es útil para usted. Link