Redução de ruído em microfones numa videoconferência.

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Redução de ruído em microfones numa videoconferência.

Mensagempor lmdmendes » 17 Jul 2007 21:00

Redução de ruído em microfones numa videoconferência.

Tenho de desenvolver um projecto que reduza o ruído captado por um microfone num sistema de videoconferência. A redução tem que ser feita recorrendo a dois microfones direccionais que deverão actuar da seguinte forma: durante a conversação um microfone (activo) capta a fala de uma pessoa e o outro capta o ruído da sala (passivo) de modo a subtrair este ruído ao sinal captado pelo microfone activo. O estabelecimento dos papéis activo/passivo será definido pela pressão de um botão que indicará a tomada de palavra.

O sinal do microfones e dos botões de pressão é enviado para um PIC, por sua vez o PIC envia o sinal dos dois Microfones para um PC, que por sua vez a partir do MatLab tem que fazer o tratamento do som e transmitir o resultado a partir de um speker.

Gostaria de perguntar se alguem ja alguma fez algum trabalho semelhante, ou que use os mesmo recursos?
Eu nunca realizei nenhum trabalho em que os dados eram enviados para o MatLab no PC, para tratamento, se alguem o menos me poder dar umas dicas a este ponto agracia.

Um Abraço
lmdmendes
Bit
 
Mensagens: 46
Registrado em: 13 Out 2006 13:29
Localização: Portugal

Mensagempor fabim » 18 Jul 2007 08:18

peraí. não entendi direito..
um microfone ira captar a fala . <3300hz.
o outro microfone ira captar o nivel de ruido..

Com o crusamento de informações voce ira subtrair o nivel de ruido do nivel de audio, deixando o audio purinho ?

SE for assim esqueça.. faça apenas com um microfone, passando por um filtro de 3° ordem"acho que da" na faixa de 300 a 3300hz, o resultante manda para o matlab digitalizar..

Assim funfa.. do geito que voce esta querendo fazer e perda de tempo.


Abraços

Fabim
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor zielpunkt » 18 Jul 2007 10:46

lmdmendes,

Não entendi o porque desse PIC. Pretende enviar o sinal por ele? Esqueça, PIC não é pra isso. Vai usá-lo apenas como uma chave de comutação do sinal, atuando como seletor via algum outro elemento capaz de chavear o áudio? Ai, tudo bem. Nada que alguns push-buttons e meia duzia de portas lógicas também não o façam. Ai, nem do PIC você precisa. Acho que o seu problema está com o MathLAB, ou seja, como ele receberia (se é que recebe) os sinais a partir de uma placa de som que tenha ao menos dois canais de entrada de audio independentes. Acho que deve colocar a sua dúvida em outro ponto do forum para receber alguma orientação a respeito, ok.


Falei, falei...pouco esclareci e nada resolvi.
Abço.
"Talento é mais barato que sal. O que separa a pessoa talentosa da bem-sucedida é muito trabalho duro." [ Stephen King ]
zielpunkt
Byte
 
Mensagens: 376
Registrado em: 12 Out 2006 11:36
Localização: Sao Paulo - SP

Mensagempor takapy » 18 Jul 2007 10:47

Se for implementar a idéia do fabim, sugiro o LMF100. O utilizei a alguns anos atrás, não sei se tem um mais atual, mas esse é muito bom. São vários filtros utilizando a técnica de capacitor chaveado. Muito bom...

Até mais ver
takapy
Bit
 
Mensagens: 25
Registrado em: 23 Nov 2006 17:31
Localização: Manaus_AM

Mensagempor lmdmendes » 18 Jul 2007 20:29

Isto e um projecto para um curso, por isso tenho q usar obrigatoriamente dois microfones e usar o procedimento que indiquei, o som antes de entrar no micro pode passar por um filtro e um ADC, mas tem q ir para o micro, o micro identificar qual o master e qual o slave e depois mandar para o PC via RS232 ou USB para o Matlab tratar e subtrair ao master o ruído que vem do slave, depois mandar por um speaker o resultado final.

O son pode ser tratado a 4KHz a gama das chamadas telefónicas, mas estou um pouco a nora de como fazer isto :(
Alguém me pode dar algumas dicas?

Um Abraço
lmdmendes
Bit
 
Mensagens: 46
Registrado em: 13 Out 2006 13:29
Localização: Portugal

Mensagempor fabim » 19 Jul 2007 08:24

huahuahuahua.. TA FU..
Você vai ter que faser um psofometro digital, identificar o nivel de audio que esta com o mesmo ruido do outro... rsrsrsrs

Bom sei lá.. o prof pardal é voce... ""PSOFOMETRO"


Abração e boa sorte

FAbim
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor lmdmendes » 19 Jul 2007 10:29

Pois é mais o menos por ai, estou mesmo fu....

Mas são os requesitos do projecto, com tantas soluções mais simples, tinha que ser obrigado de fazer desta forma :(

Mas se entretanto, alguem quiser dar uma dica, esta completamente a vontade :P

Um Abraço
lmdmendes
Bit
 
Mensagens: 46
Registrado em: 13 Out 2006 13:29
Localização: Portugal

Mensagempor takapy » 19 Jul 2007 12:03

lmdmendes,

basicamente, vc vai fazer a aquisição dos dois sinais, mandar para o PC através da RS 232, vc pode fazer isso com o famoso MAX 232 e rotinas que já existem aos montes na NET, tanto em ASM quanto em C.

Uma vez enviadas para o PC, o Matlab irá fazer o tratamento desses dados. Olhei rapidamente no help do Matlab e lá, existem algumas ferramentas para tratar sinais, procure por DATA ACQUISITION TOOLBOX. Eu nunca usei essas rotinas em específico, mas o Matlab tem um suporte legal no seu help e na internet.

espero ter ajudado...
takapy
Bit
 
Mensagens: 25
Registrado em: 23 Nov 2006 17:31
Localização: Manaus_AM

Mensagempor lmdmendes » 19 Jul 2007 12:49

Ok, eu tenho q fazer a aquisição dos dois sinais e mandar pela rs232 devidamente identificados, qual o activo e qual o passivo. Mas para a aquisição do sinal, esta será feita por dois microfones, aos quais coloco um filtro, depois tenho q converter através de ADCs externos antes de entrar para o PIC ou uso os ADCs do PIC?
O que me aconselham?

Um Abraço
lmdmendes
Bit
 
Mensagens: 46
Registrado em: 13 Out 2006 13:29
Localização: Portugal

Mensagempor fabim » 19 Jul 2007 12:56

bom ai vareia..

Qual a margem de frequencias você quer digitalizar e mandar pro pc pela serial.
E outra coisa
o PC vai receber simultaneamente os dois sinais ?

Cara sinceramente, pense em outra coisa.. Até parece que voce quer montar um "porcamente dizendo 'anti microfonia'"..Sei lá. Acho que o tempo que vai perder sera inutil.

Repense o caso e verá que sera bem dificil colocar em pratica.

Araços

Fabim
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor MOR_AL » 19 Jul 2007 15:14

Olá lmdmendes.

É mais ou menos o que você e o pessoal já postou.

1 - Posicione os dois microfones no local desejado.
2 - Amplifique o sinal deles para um nível mais apropriado (faça tudo para cada um dos microfones). Por exemplo, valores máximos de tensão, provenientes do microfone que possui maior tensão: +2,50V e -2,50V.
3 - Aplique um nível dc de +2,50V para trabalhar apenas com tensões positivas.
4 - Aplique um filtro para limitar a frequência em 4kHz (-3db) e em 8kHz (-40db). É importantíssimo que os filtros de cada um dos microfones estejam "casados". Caso os microfones captem o mesmo sinal, eles TEM que possuir as mesmas tensões. Um filtro do tipo Tchebitchev não é uma boa opção, apesar de possuir maior atenuação, é difícil casar os dois. Um filtro tipo Bessel seria o ideal, apesar de poder serem necessários mais estágios.
5 - Os itens 2, 3 e 4 poderão ser projetados com alguns componentes em comum. Filtro com ganho e/ou com nível dc.
6 - Os dois sinais obtidos poderão ser aplicados ao CAD. Mas antes tem-se que:
A frequência máxima que você quer reproduzir é de 4kHz, ok? Então a sua taxa de amostragem mínima TEM QUE SER DE 8ksps (Samples Per Second). Como são dois sinais, se for para multiplexá-los em um mesmo CAD, sua taxa de amostragem tem que ser de 16ksps.
Isso se a frequência máxima dos seus sinais fossem de 4kHz, mas o filtro ainda vai deixar passar algum sinal com frequências maiores de 4kHz.
Então você terá que (no MatLab) fazer um filtro digital, para, além de tudo, não provocar o "aliasing". Mas este filtro não é perfeito, então você tem que fazer com que o filtro apresente um zero após a frequência dos 4kHz, porém sem atenuar muito o sinal de áudio.

7 - Obviamente você vai trabalhar com dois sinais limitados no tempo. Este sinal após digitalizado, deve ser gravado em um ou em dois arquivos, o MatLab pode "entender" o que está contido no(s) arquivos, basta você colocar no formato apropriado.
Sendo limitados no tempo, você vai ter que aplicar um outro tipo de filtro para minimizar este problema.

8 - Agora você pode tratar o sinal de acordo com suas necessidades.

Eu diria que este tema pode dar, no mínimo, uma monografia para fim de curso de engenharia eletrônica.

Como disse o Fabim "huahuahuahua.. TA FU.. ".

Muito, mas muito boa sorte.

MOR_AL
Avatar do usuário
MOR_AL
Dword
 
Mensagens: 2934
Registrado em: 19 Out 2006 09:38
Localização: Mangaratiba - RJ

ummmm

Mensagempor tecman » 19 Jul 2007 16:40

olha o bem dito nyquist .rsrsrsrsrs
tecman
Byte
 
Mensagens: 342
Registrado em: 01 Nov 2006 09:02

Mensagempor Ledistor » 20 Jul 2007 14:00

Talvez o artigo na página 10 possa lhe ser útil.
http://www.analog.com/library/analogdia ... /vol34.pdf
Ledistor
Bit
 
Mensagens: 11
Registrado em: 10 Dez 2006 11:07
Localização: São Paulo

Mensagempor lmdmendes » 22 Jul 2007 18:30

Ok, obrigado a todos pelas dicas.
Sobre como tratar os dados em MatLab, alguém pode dar umas dicas? Se eu usar um PIC, eu sei mandar dados pela RS232, mas manda-se normalmente, não se tem q identificar qual a trama? Como o MatLab recebe e identifica a trama? N conhecem nenhum tutorial onde fale disso? Eu agora so queria testar como mandar um sinal de um Mic para o Pc e o MatLab produzir ele directamente, com um ganho 1 ou outro ganho, era so para ver como funcionava essa parte de receber e produzir pelo Speaker. Se alguem tiver um exemplo, agradecia q indicasse.
Um Abraço
lmdmendes
Bit
 
Mensagens: 46
Registrado em: 13 Out 2006 13:29
Localização: Portugal

Mensagempor MOR_AL » 23 Jul 2007 13:55

Olá lmdmendes.

Não me lembro mais de detalhes do MatLab, mas vamos lá.

1 - Antes de abrir o MatLab, você tem que criar um arquivo dos dados enviados pelo PIC ao PC. Este arquivo é FORMATADO, significa que os caracteres podem ser lidos e entendidos em um editor de texto simples (tipo Bloco de Notas ou o WordPad). São caracteres ASCII separados por espaço. Normalmente usa-se a extensão.DAT.

2 - Este arquivo pode conter em seu interior: título geral ("Medições em Microfones em xx/xx/xxxx"), sub títulos relacionados com os valores obtidos ("Valores do microfone 1", "Valores do microfone 2"), a(s) coluna(s) com os valores obtidos pelo PIC.

3 - Abra o MatLab. Você deve conhecer um pouquinho do MatLab, E ter um livro ou apostilas, estas últimas podem ser encontradas na internet.
Tem o comando LOAD e SAVE.

4 - Para que o MatLab carregue, aceite, leia ou entenda o arquivo.DAT obtido via PIC-PC, você faz um programinha que contém o comando LOAD. Ex.: "load NOME DO ARQUIVO".

5 - Com umas apostilas ou/e um bom livro de MatLab, você vai em frente.
Eu tenho diversas apostilas baixadas na internet há algum tempo, mas um bom livro é bem melhor. Comprei o "Programação em MATLAB para engenheiros" do Stephen J. Chapman" da editora THOMSON. De engenharia só tem alguns exemplos. O forte é a parte de programação, que por sinal é excelente.

Como eu disse antes, muuuuiiito boa sorte.

MOR_AL
Avatar do usuário
MOR_AL
Dword
 
Mensagens: 2934
Registrado em: 19 Out 2006 09:38
Localização: Mangaratiba - RJ


Voltar para PIC

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

cron

x