1 / 58

Conceitos de Sinais e Sistemas Mestrado em Ciências da Fala e da Audição

Conceitos de Sinais e Sistemas Mestrado em Ciências da Fala e da Audição. António Teixeira. Som em Matlab Aliasing Quantização SNR Conversão D/A Operações com sinais. Aula 4. Som em Matlab. Ver Matlab num Instante. Sumário. Geração de som com o Matlab

york
Télécharger la présentation

Conceitos de Sinais e Sistemas Mestrado em Ciências da Fala e da Audição

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Conceitos de Sinais e SistemasMestrado em Ciências da Fala e da Audição António Teixeira

  2. Som em Matlab Aliasing Quantização SNR Conversão D/A Operações com sinais Aula 4

  3. Som em Matlab Ver Matlab num Instante

  4. Sumário • Geração de som com o Matlab • Funções do Matlab para manipular sons • sound • wavread • wavwrite • Geração de sons artificais • ruído • sinusóides • soma de duas sinusóides • sinusóides de frequência variável

  5. Som no Matlab • É possível utilizar o Matlab na manipulação e geração de som. • Existem funções para ler ficheiros de som para um vector, gravar um vector para um ficheiro e para reproduzir sons a partir de ficheiros. • Podem-se ouvir os vectores!

  6. Função sound A função sound permite reproduzir um som armazenado num vector. Sintaxe sound(x,fa) em que x é um vector linha ou coluna e fa é a frequência de amostragem que se pretende utilizar.

  7. Função wavread A função wavread lê um ficheiro de som em formato “wav” do Windows. Sintaxe [x,fa]= wavread(’ficheiro’) em que x é um vector , fa é a frequência de amostragem utilizada e ‘ficheiro’ é o ficheiro de som que se pretende ler.

  8. Função wavwrite A função wavwrite escreve um ficheiro de som em formato “wav” do Windows. Sintaxe wavwrite(x,fa,’ficheiro’) em que x é um vector , fa é a frequência de amostragem utilizada e ‘ficheiro’ é o ficheiro de som onde se pretende guardar o som armazenado em x.

  9. Exemplo: ficheiro de som Neste exemplo pretende-se ler para um vector um som armazenado num ficheiro e reproduzi-lo no Matlab [x,fa]= wavread('som.wav'); sound(x,fa)

  10. Exemplo: Gravar um som • Neste exemplo lê-se para um vector armazenado num ficheiro, manipula-se e grava-se num ficheiro diferente. [x,fa]= wavread('som.wav'); sound(x,fa) y= x(end:-1:1); % Inverte no tempo wavwrite(y,fa,'som2.wav');

  11. Alteração da freq. de amostragem Ao reproduzir um som é possível alterar a frequência de amostragem com que é reproduzido. Exemplo: utilizando o dobro da frequência de amostragem do original. sound(x,fa*2) Exemplo: utilizando metade da frequência de amostragem do original sound(x,fa/2)

  12. Geração de sons artificiais O Matlab possui formas expeditas de gerar sons artificais. Vamos ver como é que se geram diferentes tipos de sons. A função rand gera uma sequência pseudo aleatória. Qual será o som produzido por um vector gerado com este função? x= rand(1,10000)-0.5; % Ruído de média nula sound(x,8000);

  13. Geração de sons artificiais A função seno desempenha um papel central na geração de sons articiais. Vejamos qual o som que obtemos. fa= 8000; Ta= 1/fa; t= 0:Ta:1; %Gera o sinal de tempo x= sin(2*pi*400*t); % sinusóide de 400Hz sound(x,fa);

  14. Geração de sons artificiais Soma de duas sinusóides Podemos gerar dois vectores com sinusóides com frequências diferentes e somá-los para ouvir o resultado fa= 8000; Ta= 1/fa; t= 0:Ta:1; %Gera o sinal de tempo x= sin(2*pi*400*t); % sinusóide de 400Hz y= sin(2*pi*410*t); % sinusóide de 410Hz soundsc(x+y,fa);

  15. Geração de sons artificiais Multiplicação de sinusóides Podemos gerar dois vectores com sinusóides de frequências diferentes e realizar um produto ponto-a-ponto entre eles. fa= 8000; Ta= 1/fa; t= 0:Ta:1; %Gera o sinal de tempo x= sin(2*pi*400*t); % sinusóide de 400Hz y= sin(2*pi*80*t); % sinusóide de 80Hz soundsc(x.*y,fa);

  16. Geração de sons artificiais Sinusóides de frequência variável Com o Matlab não é muito díficil gerar uma sinusóide cuja frequência varia linearmente ao longo do tempo. fa= 8000; Ta= 1/fa; t= [0:Ta:2 2:-Ta:0]; %Gera o tempo x= sin(2*pi*400*t.*t); sound(x,fa)

  17. Geração de sons artificiais Sinusóides de frequência variável Neste exemplo temos uma sinusóide cuja frequência varia ao longo do tempo de forma sinusóidal. fa= 8000; Ta= 1/fa; t= 0:Ta:2; %Gera o sinal de tempo s= 80*sin(2*pi*5*t); x= sin(2*pi*400*t + s); sound(x,fa)

  18. Demos e links • Demonstração de um efeito áudio de modificação do sinal de voz • Ficheiro Matlab • Som original • Som modificado • Links para páginas interessantes sobre som • Página sobre o som e a sua digitalização • Página sobre a audição • CoolEdit96 - demo de um programa de edição de som mas que permite ouvir, visualizar e manipular sons digitais

  19. Aliasing

  20. O que acontece se não se amostra suficientemente rápido? x(t)=A cos (2f0t+) se amostramos com um período Ts obtemos x[n]=x(nTs)=A cos (2f0nTs+) Consideremos outra sinusóide com frequência f0+k fs, com k inteiro e fs=1/Ts y(t)=A cos (2(f0+k fs)t + ) Amostrando y(t) com o mesmo Ts, obtemos y[n]=y(nTs) =A cos (2 (f0+k fs) nTs+) = A cos (2f0 nTs+ 2 k fs Ts+) = A cos (2f0 nTs+ 2 k +) = A cos (2f0 nTs +) = x[n] y[n] tem as mesmas amostras que x[n] sendo impossível distingui-la de x[n]. Como k é um inteiro, positivo ou negativo, existem um número infinito de sinusóides que resultam nas mesmas amostras x[n] quando amostradas com a frequência fs !

  21. alias • As frequências f0+k fs são chamadas “alias” da frequência f0 • porque todas elas parecem ser a mesma quando amostradas com frequência de amostragem fs • No dicionário Inglês-Português da Porto Editora: • alias [´eiliaes] , 1 adv. aliás 2 s. pseudónimo, nome falso, nome suposto

  22. Uma segunda fonte de “aliasing” - “folding” x(t)=A cos (2f0t+) se amostramos com um período Ts obtemos x[n]=x(nTs)=A cos (2f0nTs+) Consideremos outra sinusóide com frequência -f0+k fs, com k inteiro e fs=1/Ts w(t)=A cos (2(-f0+k fs)t + ) Amostrando y(t) com o mesmo Ts, obtemos w[n]=y(nTs) =A cos (2 (-f0+k fs) nTs+) = A cos (-2f0 nTs+ 2 k fs Ts+) = A cos (-2f0 nTs+ 2 k +) = A cos (2f0 nTs +) % porque cos(- )=cos() = x[n] w[n] tem as mesmas amostras que x[n] sendo impossível distingui-la de x[n].

  23. Porquê “folding” freq. aparente 1000 1000 2000 Frequência real

  24. Aliasing • Sendo f a frequência de um sinal e a frequência de amostragemfs, as seguintes regras permitem calcular a frequência • f < ½fs • Como a frequência do sinal se encontra abaixo do limite imposto pelo teorema da amostragem, não ocorre “aliasing”; o sinal amostrado possui a frequência correcta. • ½fs < f < fs • Existe “aliasing” sendo a frequência do sinal amostradofa = fs - f • f > fs • Ocorre “aliasing”. Para obter a frequência do sinal amostrado obter o resto da divisão de fporf. No final se ½fs < f < fs o sinal amostradofa = fs - f; caso contrário fa =  f

  25. Quantização

  26. Quantização • Os valores contínuos da amplitude também têm de ser convertidos em valores tratáveis pelo computador • Os computadores guardam os números usando 0s e 1s, os chamados bits • Este processo designa-se por quantização

  27. Capacidade de representação • 1 Bit = 2 estados • 2 Bits = 4 estados • 3 Bits = 8 estados • ... • N Bits = 2N estados Memória : : 8 Bits 256 palavras : :

  28. Capacidade de representação • Exemplo do número de estados possíveis possíveis para 3 bits

  29. Precisão, número de bits • O número de bits usados para representação determina a precisão (ou resolução) em amplitude do processo de amostragem referido atrás. • Quanto mais bits forem usados, maior será essa resolução. • Para obtermos uma resolução equivalente à de um sistema CD de áudio, são necessários 16 bits, • o que significa que temos 65536 combinações numéricas possíveis. • Os valores de amplitude amostrados são sempre arredondados para o código binário mais próximo.

  30. Exemplo de quantização • 8 bits • 7 bits • 3 bits • 2 bits

  31. Número de bits • 8 bits • 256 níveis • Se tivermos sinal entre – 1 e + 1 V • Erro máximo 3.4 mV (mili=0.001) • 16 bits • 65536 níveis • Se tivermos sinal igual ao anterior • Erro máximo 15 microV (micro=0.000001)

  32. Exemplo 3 bits

  33. Em Matlab t=0:1e-3:4 x= sin (2*pi*10*t)+1 % para ser entre 0 e 1 bits=8 N=2^bits xquant=round(x*(N-1)/2)*2/(N-1) stem(t,xquant,'ro'); hold on; diferenca=x-xquant plot(t,diferenca, 'g+') % experimente com bits=1,2 ...

  34. Resultados 4 bits 2 bits erro 8 bits

  35. Erro de arredondamento e bits 1 N=níveis  = distância entre níveis -1 N=2/ N  =2  =N/2 Erro máximo de arredondamento é = /2=1/N logo N=1/  número de bits (b)  b log2 N

  36. SNR devido a quantização SNR= 20 log10 (App/) como A=2 e N=2b temos = 2-b App/= 2 x 2b = 2b+1 20 log10 (2b+1) = 20 (b+1) log10 (2) 6 (b+1) dB aumento de 6 dB/bit

  37. Exercício • Estimar o número de bits necessários para representar amostras de um sinal com valores entre –1 e 1 com um erro de arredondamento inferior a 10-3

  38. Em Matlab % RETOMANDO O EXEMPLO ANTERIOR t=0:1e-3:4; x= sin (2*pi*10*t); bits=8; N=2^bits; xquant=round(x*(N-1)/2)*2/(N-1); plot(t,xquant,'ro'); hold on; diferenca=x-xquant; plot(t,diferenca, 'g+'); % valor do erro máximo de arredondamento neste caso concreto max(diferenca) % valor teórico para o erro máximo de arredondamento 1/N % SNR snr=10*log10(dot(x,x)/dot(diferenca,diferenca)) % EXPERIMENTE com 1,2 ... até 8 bits. Qual o aumento de snr com o aumento de 1 bit ?

  39. Conversão D/A

  40. Demo1 – reconstrução com impulsos quadrados – “hold” • Demo2 – com impulsos triangulares • Demo2 – com impulsos ideais truncados

  41. Operações com sinais

  42. Operações com sinais I • Operações na variável dependente • Mudança de escala (da amplitude) • y(t)=c x(t) ou y[n]=c x[n] • Exemplo: Amplificador electrónico • Adição • y(t)= x1(t) + x2(t) • Exemplo: mixer áudio • Multiplicação • y(t)= x1(t) x2(t) • Exemplo: sinal de rádio AM (modulação de Amplitude) • Diferenciação, Integração • Ex: bobine e condensador

  43. x(2t) x(t) t x(t/2) t t Operações na variável independente • Mudança da escala temporal • y(t)= x (a t) a>1 => compressão 0<a<1 => expansão Alguma ideia de aplicação na área da fala?

  44. x(t) -t1 t t2 y(t)=x(-t) t -t2 t1 Operações na variável independente • inversão temporal y(t)= x (- t)

  45. TPC  • Leitura dos 2 capítulos relativos a sinais do livro Rosen & Howell

  46. Codificação/Representação Os vários tipos de informação são codificados de forma diferente. Para interpretar cada um dos formatos é necessário um descodificador.

  47. Código ASCII (texto) • A primeira versão do código ASCII (American Standard Code for Information Interchange) foi criada em 1963 para normalizar a transmissão e armazenamento de texto. Em 1967 foram incluídas as letras minúsculas no código que no essencial permaneceu inalterado até aos nossos dias.

  48. Código ASCII Exemplo de codificação para a letra “A” 4x16+1=64+1=65=100 0001 Letra “W”: 5x16+7=87=101 0111

  49. Código ASCII

  50. 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 1 0 1 0 0 1 0 1 1 0 0 0 0 0 0 1 1 0 1 0 Exemplo código ASCII • Código ASCII • 7 Bits = 128 Caracteres Memória : : 0 77 65 84 MATLAB 76 65 66 : :

More Related