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?)
Respostas:
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).
fonte