¿Cómo es posible filtrar la voz de una persona de otras 100 voces?

8

Entonces, acabo de enterarme de que la voz humana no es una sola onda sinusoidal, es un montón de ondas sinusoidales ilimitadas, cada una con diferentes frecuencias,

De acuerdo con Wikipedia,

La voz consiste en un sonido hecho por un ser humano que utiliza las cuerdas vocales para hablar, cantar, reír, llorar, gritar, etc. Su frecuencia varía de aproximadamente 60 a 7000 Hz.

Entonces, si la voz humana es una señal compuesta, contiene varios rangos de frecuencias entre 60Hz y 7KHz.

Supongamos que si hay un grupo de personas cantando la misma canción todos juntos, cada persona tiene sus propios rangos de frecuencias de voz,

Por ejemplo,

Si una persona A tiene las siguientes frecuencias, 100Hz, 250HZ 6KHz, 10Hz, 87Hz, 52Hz, 2KHz .......

y una persona B tiene lo siguiente, 217Hz1, 11Hz, 12Hz, 2323Hz, 839Hz, 4KHz, 100Hz, 10Hz .....

debe haber tantas frecuencias que sean similares tanto en la persona A y B, como en el ejemplo anterior, las frecuencias de 100Hz y 10Hz son comunes entre dos personas.

Estaba viendo el nombre de un programa de televisión "Fringe", donde filtran la voz del hombre en particular de un archivo de audio, mientras que había otras personas presentes allí también.

Entonces, ¿cómo filtran exactamente la voz de alguien de la voz de cientos de personas si hay tantas frecuencias comunes entre todas ellas? ¿Tiene que ver algo con las amplitudes de las frecuencias de las personas?

Sufiyan Ghori
fuente
Hay varias formas en que esto podría lograrse. Tendrás que dar más detalles sobre qué método usaron en el programa de televisión.
endolito
10
Los programas de televisión componen muchos efectos especiales. Probablemente este era otro. Los humanos piensan que pueden hacer esto, pero resulta que muchas conjeturas inconscientes generalmente están involucradas en esa percepción.
hotpaw2

Respuestas:

6

Si la señal se graba usando solo un micrófono, puede usar métodos como la resta espectral. Este método es más adecuado para el ruido "constante", como el ruido de un ventilador o un motor inactivo. Otros métodos se basan en estadísticas y modelos perceptivos del habla. Si la señal se graba con varios micrófonos, puede usar la separación de fuente ciega para separar las señales (del habla). Tal como está hoy, no obtendrá resultados perfectos. El resultado final típico es siempre una compensación entre "ruido" y la claridad de la señal de voz de interés. Más supresión de "ruido" -> más degradación de la señal de interés.

dspGuru
fuente
1
Bienvenido a dsp.se :) Me gustaría ofrecer algunos consejos y estímulos amigables: su primera respuesta es buena, felicidades, no todos ofrecen buenas respuestas en su primer intento. Si desea participar más aquí, permítame darle algunos consejos sobre cómo hacer buenas respuestas excelentes : generalmente incluyen enlaces y referencias y / o una o dos oraciones de explicaciones sobre los métodos propuestos (y por qué encajan bien) por el problema) Las excelentes respuestas también aprovechan al máximo el formato: hay listas y viñetas, párrafos y citas, y si se ve bien, es más fácil de leer. Diviértete aquí!
Penélope
mi preocupación es que todos tienen una frecuencia similar, ¿cómo podríamos saber qué frecuencia pertenece a quién? ¿Cuál es la idea general detrás de esto?
Sufiyan Ghori
1
Si tiene dos altavoces hablando al mismo tiempo, no SABERÍA, pero podría adivinar. Cuando hagas un análisis de frecuencia, verás que las frecuencias de todo el espectro se ven afectadas, y no puedes simplemente sacar un cierto conjunto de frecuencias y decir que este es el altavoz1 y otro conjunto de frecuencias, y decir que este es el altavoz2. Si desea decidir quién está hablando cuándo, deberá implementar algún código que tome esa decisión. Lo más probable es que se base en un modelo de los hablantes (es decir, las personas que hablan).
dspGuru
1
A continuación, puede utilizar la decisión de silenciar el audio y / o hacer algún tipo de filtrado inteligente cuando otras personas (que el que usted está interesado en) están hablando ..
dspGuru
Entonces, ¿quieres decir que no es posible hacerlo?
Sufiyan Ghori
-1

bueno, digamos que tenemos un archivo de sonido de dos personas hablando ... si no estuvieran hablando al unísono, sería posible separar el elemento tonal de su discurso. puede ser más complicado separar los elementos de ruido de su discurso (ssss o sonidos fffff), pero nuevamente si no estaban hablando al unísono, podría ser posible. Esto sería mucho más fácil de hacer si pudiéramos realizar un análisis espectral del sonido sin perder la información de fase.

Básicamente, el análisis espectral toma una forma de onda (sonido como onda única o línea) y separa todos los tonos individuales para que pueda verlos de bajo a alto y de izquierda a derecha en el tiempo. Al hacer esto, se pierde la mayor parte de la información que muestra el ascenso y la caída de la forma de onda única. si pudiéramos preservar la información de fase, esto sería mucho más fácil porque todas las frecuencias de componentes individuales de una voz estarían relacionadas armónicamente entre sí, por lo que su fase se alinearía.

En la actualidad, no conozco ningún algoritmo que logre esto, pero creo que es teóricamente posible. Recuerdo haber leído un artículo sobre el creador de melodyne, Peter Neubäcker, trabajando en una forma de hacer esto, para que dos cantantes que cantaran juntos pudieran separarse, pero no sé cómo encontraría este artículo nuevamente.

kamalmanzukie
fuente