Tengo un archivo .mp3. ¿Cómo puedo separar la voz humana desde el resto del sonido en C?

StackOverflow https://stackoverflow.com/questions/1571062

  •  21-09-2019
  •  | 
  •  

Pregunta

¿Es posible en C [Sé que es posible, en general, - reproductor GOM lo hace]? sólo quiero a empezar ... ¿Qué dice usted?

¿Cómo es exactamente lo que identifica la voz humana se distingue de otros sonidos?

¿Fue útil?

Solución

Los filtros en los reproductores de mp3 por lo general se basan en el hecho de que la fuente de voz (el artista) en un estudio de grabación estéreo se coloca en el centro. Por lo que sólo calculan la diferencia entre los canales. Si se les da una grabación donde el artista no se posiciona como que fallan - la voz no se extrae

.

La forma fiable está empleando un detector de voz. Este es un problema muy complejo que implica matemáticas incondicional y puesta a punto exhaustiva de los algoritmos para su tarea específica. si usted va esta manera se inicia con la lectura de codificación de la voz (vocoders).

Otros consejos

Este tema se discutió exacta aquí . Comenzó como una discusión de las tecnologías de codificación de audio, pero en la página vinculado anteriormente alguien dijo

Esto significa que no hay manera de extraer la señal de voz steoro forma?

Sin embargo, se señaló que los Extracción la voz debe haber más difícil de lo que eliminar la voz.

Voy a dejar de seguir leyendo, pero sospecho extracción exitosa puede confiar en el relativamente estrecho distribución espectral de la voz en comparación con los instrumentos.

Tenga en cuenta que no es posible, en principio, a los sonidos perfectamente separadas diferentes que se mezclan juntos en una pista. Es como cuando se mezcla la crema en su café -. Después de que se hayan mezclado de, no es posible separar perfectamente a la crema y el café después

Puede haber trucos de procesamiento de señales inteligente para obtener un resultado aceptable, pero en general es imposible separar la perfección la voz de la música.

que separa la voz humana de otros sonidos no es poco. Si usted tiene una grabación de los otros sonidos a continuación, puede hacer referencia a cancelar el sonido de fondo que le dejará con la voz humana.

Si el ruido de fondo es el ruido aleatorio de algún tipo obtendrá una victoria mediante el uso de algún tipo de filtrado espectral. Pero no es sencilla y necesitaría un poco de jugar con para obtener buenos resultados. Adobe Audition tiene un filtro espectral adaptativo creo ...

Suponga que tiene el ruido blanco con una distribución bastante uniforme de frecuencias en toda la banda grabada (en una grabación sin comprimir 44Khz usted está hablando de 0 a 22Khz). A continuación, añadir una voz en él. Es evidente que la voz está utilizando las mismas frecuencias que el ruido. La voz humana oscila entre 300 Hz ~ en ~ 3400Hz. Obviamente bandpassing el audio que recortará hasta sólo el rango de voz de 300 a 3400Hz. ¿Ahora que? Usted tiene una voz y usted tiene la, ahora paso banda, el ruido blanco. De alguna manera tiene que ser capaz de eliminar el ruido y dejar que la voz en el tacto. Hay varios esquemas de filtrado, pero todos pueden dañar la voz en el proceso.

Buena suerte, no es realmente va a ser simple!

Donde buf tiene las 44100 datos de entrada de frecuencia de muestreo PCM wav

int
voiceremoval (char *buf, int bytes, int bps, int nch)
{
    short int *samples = (short int *) buf;
    int numsamples = 0;
    int x = 0;
    numsamples = bytes / 2;
    x = numsamples;



    if (bps == 16)
      {
          short *a = samples;
          if (nch == 2)
              while (x--)
                {
                    int l, r;
                    l = a[1] - a[0];
                    r = a[0] - a[1];
                if (l < -32768)
                        l = -32768;
                if (l > 32767)
                        l = 32767;
                    if (r  32767)
                        r = 32767;
                    a[0] = -l;
                    a[1] = r;
                    a += 2;
                }
      }
    return 0;
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top