Feito! Um pouco impressionado comigo mesmo.
Nosso produto precisa da função de cancelamento de eco, três possíveis soluções técnicas foram identificadas,
1) use MCU para detectar saída de áudio e áudio em sinais de áudio, escreva um algoritmo para calcular a força dos dois lados do sinal de som, de acordo com a força da saída de áudio e áudio entre as duas trocas de canais opcionais, para alcançar o efeito de chamada half-duplex, mas agora no mercado há efeito de chamada full-duplex, half-duplex tornará o produto menos competitivo
(2) Use o algoritmo de cancelamento de eco do fornecedor da CPU, a eliminação real do eco do teste não é limpa o suficiente por todos os ajustes de parâmetros ajustáveis e muitas discussões redondas com o fornecedor, longe do efeito esperado. o feedback do fornecedor é melhorar o invólucro para isolar o MIC o máximo possível do alto-falante, mas não há espaço para alterar o invólucro devido ao design do ID, qualidade de som e requisitos de volume.
(3) Baixe os algoritmos de cancelamento de eco de código aberto, como webrtc e speex, da Internet e porte-os para o produto após a compilação cruzada.
4) Adquira os algoritmos de uma empresa especializada em algoritmos de áudio, mas cada produto exigiria custos adicionais, o que reduziria muito a competitividade do produto.
Depois de pesar as opções, decidi fazer uma pesquisa aprofundada sobre a solução de usar algoritmos de código aberto;
Então, baixei uma série de códigos de cancelamento de eco do github, gitee e outros sites, tanto em C quanto em matlab.
Sintetize as duas vozes com oitava para gerar uma seção de uma cena de conversa dupla com a voz de captura do microfone próximo, bem como a voz de referência distante.
Em seguida, execute o código baixado online para cancelamento de eco, analise o áudio de saída e escolha o algoritmo que funciona melhor entre eles.
A partir dos resultados, o algoritmo AEC de processamento de áudio webrtc não é bom, o cancelamento de eco não é limpo e há uma óbvia deglutição de palavras na cena de conversa dupla. O algoritmo AEC3 de processamento de áudio webrtc é limpo, mas suprime muito o som do outro lado da conversa dupla, e o som é intermitente e não natural;
O speex tem um leve eco, é melhor encontrar uma implementação em linguagem matlab do algoritmo aec, a eliminação de eco é muito limpa, a fala dupla apenas um leve fenômeno de engolir palavras.
Então, eu uso o visual studio para compilar e depurar o código-fonte aberto do webrtc audioprocessing aec, consulte o algoritmo aec do matlab acima para modificar o código, use a depuração online para definir pontos de interrupção, execução em etapa única e outras análises de o valor da instrução a passo muda e, finalmente, obtém os dados e os resultados do algoritmo aec da linguagem matlab são idênticos. Os dados finais obtidos são exatamente iguais ao resultado do algoritmo aec no matlab;
Hoje compilado para o produto, o ganho do MIC e do SPEAKER ajustado para um valor razoável, e então a chamada real para testar o efeito do cancelamento de eco, os resultados são surpreendentemente bons.
Assim, há esperança de projetar um produto que possa atingir vendas acima da pequena meta.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3