Deseja um mini-microfone USB. É possível?

13

Eu tenho aprendido muito sobre formação de feixe adaptável e ando mexendo com vários sims no MATLAB, etc.

Mas que melhor maneira de entender algo - realmente entendê-lo - do que brincar com todo o sistema?

Para esse fim, eu gostaria de encontrar (construir?) Um conjunto de microfones conectados por USB, com, digamos, 5 microfones ou mais. Eles seriam capazes de captar sinais do ambiente (ou seja, onde quer que meu laptop estivesse), e eu seria capaz de captar esses sinais e processá-los no MATLAB ou o que fosse.

Eu realmente prefiro não construir tudo, então espero que alguém já tenha usado matrizes de microfone conectadas por USB no passado e possa apontar na direção certa?

Os microfones não precisam ser nada extravagantes no que diz respeito às resoluções de bits de seus A / D, etc. Os microfones KISS de qualidade respeitável vão muito bem.

Spacey
fonte

Respostas:

8

A câmera de vídeo Playstation Eye possui um microfone linear de 4 elementos. Ele fornece amostras de 16 bits a 48 KHz com um SNR de 90 dB. É fácil de usar: ele enumera como um dispositivo de áudio USB padrão com quatro canais separados.

Para um exemplo de como usá-lo dessa maneira, consulte: Testes de áudio de 4 canais no PS3 Eye no Ubuntu Karmic

Jim Paris
fonte
1
@ Mohammed Essa provavelmente seria uma boa solução se você estiver feliz em se limitar a quatro canais. Quatro canais fornecerão um ganho de formação de feixe de cerca de 12dB. A desvantagem é que, devido ao fato de a extensão total da matriz ser muito pequena, você terá um ponto focal de formação de feixe bastante grande: você não pode separar fontes de som muito próximas umas das outras. Portanto, seu aplicativo principal para esse array provavelmente não estaria isolando fontes de som, mas rastreando uma única fonte de som pelo espaço. Ou seja, saber onde a pessoa está de pé de sua voz ...
ARF
1
@ArikRaffaelFunke Hmm, eu não sei o suficiente sobre a formação de feixe adaptável para saber o que é um ponto focal. :-) No entanto, acho que ainda seria capaz de separar fontes usando ICA não instantânea. (na verdade, estou focando na ICA no momento). Além disso, sim 4 não é tanto quanto eu esperava ... Mas talvez isso possa ser um começo .. c #
Spacey
3

Tendo trabalhado extensivamente na formação de feixe adaptável, eu realmente evitava hackear algo por conta própria até ter alguma experiência. (Nota: Soluções profissionais com cerca de 60 canais custam cerca de 100k €. Com muitos canais, sua resolução espacial se torna muito melhor, mas você obtém apenas uma quantidade limitada de informações através de uma porta USB ...)

Para uma formação de feixe confiável, é essencial que todos os microfones usem a mesma base de tempo. A maneira mais fácil de conseguir isso é com uma placa de som USB externa com vários canais de entrada. Aqueles não são realmente baratos embora. Você já deu uma olhada no que pode ser encontrado no ebay?

Uma alternativa é sacrificar a base de tempo comum usando várias placas de som USB com, por exemplo, dois canais cada. No entanto, você precisará calibrar seu sistema de aquisição. Isso realmente não é tão difícil quanto parece:

Para calibrar, você configura sua matriz e produz um som curto (por exemplo, um crack / aplauso / etc.) A uma distância da matriz que é da ordem da extensão da matriz. Você então grava esse som e usa o Matlab ou similar para calcular a correlação cruzada entre o clap / crack / etc. nos diferentes canais. Isso fornecerá uma lista de compensações de tempo que você precisa aplicar aos seus canais para alinhá-las antes de alimentar os dados com o algoritmo de formação de feixe.

Para explorar a formação de feixe adaptável, este é provavelmente o caminho a menos, a menos que você possa fazer uma barganha em uma placa de som multicanal.


Editar 1

Esta edição é para responder às perguntas levantadas nos comentários.

A idéia básica de formação de feixe de atraso e soma é aplicar atrasos a diferentes canais de aquisição, de modo que os sons originados de um ponto no espaço se alinhem e "amplifiquem" quando o sinal dos diferentes canais for adicionado. Os sons oriundos de outras regiões do espaço não se alinham e, portanto, não são "amplificados".

O ponto no espaço para o qual os sons se alinham usando um certo conjunto de atrasos é chamado de foco da matriz do microfone (ou ponto focal). Na realidade, no entanto, o foco não é um ponto ideal, mas uma pequena (ish) (dependendo da matriz) região do espaço para a qual os sons se alinham bem. O tamanho dessa região é chamado de tamanho do ponto focal.

A geometria (tamanho, forma, etc) depende dos detalhes exatos da matriz: número de microfones, espaçamento entre microfones, conteúdo de frequência dos sinais de interesse. Veja, por exemplo, este artigo .

Para obter mais informações, procure textos sobre o foco em "matrizes faseadas" ou "matrizes lineares" em ultrassom. O feixe de luz pode ser usado na recepção (para amplificar sinais de um determinado ponto no espaço) ou na emissão (para criar um ponto "alto" em uma sala). Os princípios são idênticos: basta substituir "microfone" por "alto-falante" em seu pensamento.

Em relação ao procedimento de calibração: você está correto. O procedimento que descrevi é muito simplista. Só funciona bem se você puder criar o aplauso de calibração a uma distância muito maior do que a região do espaço em que está interessado. (Ou seja, para garantir uma onda simples)

Se isso não for possível, você deve levar em consideração a posição do aplauso. Nesse caso, o procedimento mais simples é corrigir os atrasos por correlação cruzada, conforme descrito, mas adicionar a curvatura da frente de onda ao sinal, aplicando um conjunto de atrasos "formação de feixe inverso" calculado com a posição da origem do aplaudir. (Ou seja, se você usar uma variável de profundidade + t0 (ou + z0) em seu algoritmo de formação de feixe "normal", precisará usar -t0 (ou -z0) para o algoritmo de formação de feixe inverso.)

Qual é o objetivo dessa calibração: elimina quaisquer erros devido às diferentes placas de som que iniciam sua gravação em momentos ligeiramente diferentes. Isso normalmente impediria que os sinais se alinhassem corretamente, mesmo com atrasos corretos e, assim, impediria o efeito de amplificação que você estava procurando.

ARF
fonte
Obrigado Arik. No entanto, não sei por que você deseja compensar os atrasos aqui. Por exemplo, algumas formas de feixe adaptáveis, como você sabe, são atrasos e somas; portanto, ocorre automaticamente problemas de atraso de tempo. A segunda coisa (acho que é isso que você está dizendo), é que eu não quero um tempo-sync comum. (ou seja, pressione um botão, todos os microfones começam a gravar ao mesmo tempo), mas não quero que eles tenham atrasos comuns.
Spacey
Na verdade, eu construí no meu laptop, uma matriz de microfone, acho que são apenas dois microfones, mas pode ser um ponto de partida, no entanto, não tenho idéia de como acessar seus dados com o mínimo de barulho separadamente ...
Spacey
@ Mohammad - o problema não está compensando atrasos conhecidos , mas sim atrasos desconhecidos . Basicamente, haverá algum tempo de processamento para cada placa de som USB separada, e pode variar de dispositivo para dispositivo (nesse caso, pode ser compensado) ou até não ser constante / alterar dependendo do carregamento do barramento USB.
Connor Wolf
@Mohammad O que o FakeName disse ... Para tornar as coisas ainda mais claras: a base de tempo para qualquer formação de feixe deve ser melhor do que o meio período do componente de frequência mais alta que você deseja levar em consideração. Acredito que isso seja impossível de se conseguir com placas de som independentes, basta iniciar a gravação ao mesmo tempo. As coisas são diferentes se você tiver uma única placa de som com vários canais.
ARF
@ArikRaffaelFunke Entendo o que você quer dizer com calibração, entendi mal sua afirmação. No entanto, não vejo como remover o atraso de tempo de uma base de tempo incomum, sem remover inadvertidamente o atraso de tempo do canal (que você deseja manter). A única maneira é garantir que a distância de cada microfone a partir do aplauso seja a mesma, mas isso é impossível para o arranjo linear> 2. Talvez se longe o suficiente (assim, frentes de onda planares) não importará muito?
Spacey