Como é possível filtrar a voz de uma pessoa dentre 100 outras vozes?

8

Acabei de aprender que a voz humana não é uma única onda senoidal, é um monte de ondas senoidais ilimitadas, cada uma com frequências diferentes,

Segundo a Wikipedia,

A voz consiste no som produzido por um ser humano usando as pregas vocais para falar, cantar, rir, chorar, gritar etc. Sua frequência varia de 60 a 7000 Hz.

Portanto, se a voz humana é um sinal composto, ela contém várias faixas de frequências entre 60Hz e 7KHz.

Suponha que, se houver um grupo de pessoas cantando a mesma música, cada pessoa tenha suas próprias faixas de frequências de voz,

Por exemplo,

Se uma pessoa A tiver as seguintes frequências, 100Hz, 250Hz 6KHz, 10Hz, 87Hz, 52Hz, 2KHz .......

e uma Pessoa B possui os seguintes 217Hz1, 11Hz, 12Hz, 2323Hz, 839Hz, 4KHz, 100Hz, 10Hz .....

deve haver tantas frequências que são semelhantes na pessoa A e B, como no exemplo acima, as frequências 100Hz e 10Hz são comuns entre duas pessoas.

Eu estava assistindo o nome de um programa de TV "Fringe", onde eles filtram a voz do homem em particular a partir de um arquivo de áudio, enquanto havia outras pessoas presentes lá também.

Então, como exatamente eles filtram a voz de alguém da voz de centenas de pessoas, se existem tantas frequências comuns entre todas elas, isso tem a ver com as amplitudes das frequências de uma pessoa?

Sufiyan Ghori
fonte
Existem várias maneiras de fazer isso. Você terá que fornecer mais detalhes de qual método eles usaram no programa de TV.
Endolith 26/10/12
10
Os programas de TV compõem muitos efeitos especiais. Provavelmente era outro. Os humanos pensam que podem fazer isso, mas acontece que muitas suposições inconscientes geralmente estão envolvidas nessa percepção.
hotpaw2

Respostas:

6

Se o sinal for gravado usando apenas um microfone, você poderá usar métodos como subtração espectral. Esse método é mais adequado para ruído "constante", como o ruído de um ventilador ou de um motor inativo. Outros métodos dependem de estatísticas e modelos perceptivos de fala. Se o sinal for gravado com vários microfones, você poderá usar a separação de fonte cega para separar os sinais (de fala). Como está hoje, você não obterá resultados perfeitos. O resultado final típico é sempre uma troca entre "ruído" e clareza do sinal de interesse da fala. Mais supressão de "ruído" -> mais degradação do sinal de interesse.

dspGuru
fonte
11
Bem-vindo ao dsp.se :) Gostaria de oferecer alguns conselhos e incentivos amigáveis: sua primeira resposta é boa, parabéns, nem todo mundo oferece boas respostas em sua primeira tentativa. Se você quiser participar aqui mais, deixe-me dar-lhe algumas dicas sobre como fazer boas respostas grande : eles geralmente incluem links e referências e / ou uma ou duas frases de explicações sobre os métodos propostos (e por que eles são um bom ajuste para o problema). Ótimas respostas também fazem o melhor uso da formatação: há listas e marcadores, parágrafos e citações e, se estiver bonito, é mais fácil de ler. Divirta-se aqui!
Penelope
qual é a minha preocupação, todo mundo tem uma frequência semelhante, como saberíamos então qual frequência pertence a quem? qual é a ideia geral por trás disso?
Sufiyan Ghori 26/10/12
11
Se você tem dois oradores conversando ao mesmo tempo, não saberia - mas pode adivinhar. Quando você faz uma análise de frequência, verá que as frequências em todo o espectro são atingidas, e você não pode simplesmente pegar um determinado conjunto de frequências e dizer que este é o alto-falante1 e outro conjunto de frequências e dizer que é o alto-falante2. Se você quiser decidir quem está falando quando, precisará implementar algum código que tome essa decisão. Muito provavelmente, será baseado em um modelo de alto-falantes (ou seja, as pessoas falando).
dspGuru
11
Você pode então usar a decisão de áudio mudo e / ou fazer alguma filtragem inteligente quando outras pessoas (que o que você está em interessado) estão falando ..
dspGuru
então você quer dizer que não é possível fazer isso?
Sufiyan Ghori 27/10/12
-1

ok, digamos que temos um arquivo de som de duas pessoas conversando .. se elas não estivessem conversando em uníssono, seria possível separar o elemento tonal de seu discurso. pode ser mais difícil separar os elementos de ruído de sua fala (sons ssss ou fffff), mas, novamente, se eles não estiverem falando em uníssono, será possível. isso seria muito mais fácil se pudéssemos realizar análises espectrais no som sem perder as informações da fase.

basicamente, a análise espectral toma uma forma de onda (som como onda ou linha única) e separa todos os tons individuais para que você possa vê-los de baixo para alto e da esquerda para a direita no tempo. ao fazer isso, a maioria das informações que mostram a ascensão e queda da forma de onda única é perdida. se pudéssemos preservar as informações da fase, isso seria muito mais fácil, porque todas as frequências de componentes individuais de uma voz estariam harmonicamente relacionadas entre si, assim sua fase se alinharia.

No momento, não conheço nenhum algoritmo que atinja isso, mas acredito que seja teoricamente possível. Lembro-me de ler um artigo sobre o criador de melodyne Peter Neubäcker trabalhando em uma maneira de fazer isso, para que dois cantores juntos pudessem ser separados, mas não sei como encontraria esse artigo novamente.

kamalmanzukie
fonte