Detectando alterações entre voz e música

7

Eu tenho vários arquivos de áudio com partes de fala e música (pense em rádio). Por exemplo, um determinado arquivo pode consistir nas seguintes seções:

music --- speech --- music --- speech --- music --- speech --- music

Meu objetivo é detectar quando o arquivo muda entre música e fala e cortar as partes da música deixando apenas a fala. No entanto, não sei qual método usar para distinguir entre fala e música. Eu estava pensando em detectar o andamento, mas algumas músicas são muito lentas ou com um andamento variável.

(Enquanto estamos nisso, para que eu não precise escrever minhas próprias, existem bibliotecas de software existentes por aí que possam distinguir entre fala e música?)

haroba
fonte
Soa como um problema de separação cega Fonte
Phorce
A música e a fala não são misturadas (bem, é, mas apenas por alguns segundos no início e no final das seções de fala), então acho que não.
haroba
Quantos microfones? Qual é a duração de cada segmento? Se você deseja examinar as propriedades de segmentação, isso é difícil, pois não há características definidoras, por exemplo, a pessoa pode falar por um longo período e a música pode tocar por um período mais curto do que o esperado. Você tem algum dado de treinamento (como é a fala e como é a música)?
Phorce
Depende do tipo de música. Mas o discurso sonoro geralmente tem um tom único. Enquanto a música pode ser polifônica e pode conter tons fora do alcance da fala humana (baixo a soprano).
hotpaw2
11
@kRazzyR, acabei escrevendo uma solução com base neste artigo: speech.kth.se/prod/publications/files/3437.pdf
haroba

Respostas:

13

Esse é um problema bem estudado, que remonta a meados dos anos 90 (desafios de transcrição de transmissão DARPA / NIST). Pesquise "segmentação de fala / música" ou "segmentação de áudio" e encontrará milhares de trabalhos de pesquisa.

Existem duas abordagens gerais para resolver esse problema:

Classificação supervisionada

Treine um classificador de fala / música, usando uma abordagem padrão de aprendizado de máquina. Você pode usar MFCCs como recursos de entrada, juntamente com outros recursos básicos, como taxa de cruzamento zero, modulação de amplitude em 4Hz etc. .

Qualquer algoritmo de classificação funciona - suporta máquinas de vetores, modelos de mistura gaussiana, árvores de decisão. Depois que a classificação for concluída, você terá quadros classificados incorretamente (por exemplo, um pequeno segmento de acapella em uma música será classificado como fala; ou um FX ou um toque entre a fala se destacará). Isso requer pós-processamento, a abordagem mais comum é aplicar a filtragem de modo (votação) na sequência de saídas do classificador. Às vezes, a classificação / suavização temporal é agrupada pelo uso de modelos markov ocultos para classificação e suavização temporal.

Ref: Classificação e segmentação de áudio com base em conteúdo usando máquinas de vetores de suporte , Lu et al.

Detecção de alteração de segmento não supervisionada

Considere uma janela 10s deslizando sobre o sinal. Calcule recursos de áudio na primeira metade, na segunda metade e use um teste estatístico para decidir qual hipótese é mais provável: os dois conjuntos de recursos de áudio são extraídos da mesma distribuição ou de duas distribuições diferentes. A saída do teste informará a probabilidade de o meio da janela corresponder ao limite entre uma fala e um segmento de música. Selecione os pontos com as pontuações mais altas como os limites do segmento.

Os mesmos recursos de áudio da abordagem supervisionada (MFCC, ZCR, modulação de amplitude em 4 Hz ...) podem ser usados.

Critério "livro didático" para o teste estatístico: critério de informação bayesiana (BIC).

Ref: Segmentação e agrupamento de fluxo de áudio não supervisionado via critério de informação bayesiano , Zhou & Hansen (para uma introdução ao BIC).

Abordagens combinadas supervisionadas e não supervisionadas para segmentação automática de fluxos de áudio radiofônicos , Richard, Ramona e Essid (para testes de detecção de alterações mais exóticos).

pichenettes
fonte
Tipo senhor / senhora, por favor, poderia me indicar bibliotecas python que possam realizar essa "detecção de regiões de fala e regiões de música etc. em um áudio"? Estou tentando resolver esse problema, mas não progredi muito.
Krazzy R