Conceitos de Sinais e Sistemas Mestrado em Ciências da Fala e da Audição Edição 2006/7 António Teixeira AT 2006 1 Aula AT 2006 • Conversão A/D • Aliasing • Quantização • Conversão D/A • Operações com sinais • Som em Matlab 2 Passagem de contínuo a discreto AT 2006 3 Conversão A/D • O processo pelo qual um sinal é convertido numa representação digital é conhecido por conversão analógica-digital – A/D conversion • O processo inverso D/A AT 2006 4 Passagem de contínuo a discreto - Amostragem 10 9.08 8.16 8 8.08 7.40 6.46 6.02 6 6.52 4 2.80 2.52 1.95 2 0.14 0 0.00 -0.6 -2 AT 2006 0 20 40 60 80 100 120 140 5 Amostragem 10 9.08 8.16 8 8.08 7.40 6.46 6.02 6 6.52 4 2.80 2.52 1.95 2 0.14 0 0.00 -0.6 Período de amostragem -2 AT 2006 0 20 40 60 80 100 120 140 6 Amostragem • Tira-se amostras do sinal espaçadas de um intervalo de tempo fixo, o período de amostragem, representado por Ta • O período de amostragem depende da frequência de amostragem (fa) [em Inglês fs] – Número de amostras por segundo – Ex: fa=1000 Hz dá T=1/fa=1/1000=1 ms • O número total de pontos de um sinal digital depende da sua duração e da frequência de amostragem – 5 segundos amostrados a 10 000 Hz dão 50 000 amostras AT 2006 7 Sinal Discreto O sinal anterior pode ser representado de forma aproximada apenas pela amplitude das suas amostras e pelo período de amostragem. S= [0, 1.95, 7.4, 9.08, 8.16, 6.03, 2.8, 0.15, -0.68, 2.53, 6.46, 8.09, 6.52] Ou seja, pode ser representado por um vector AT 2006 8 Uma sinusóide de 2.5 Hz amostrada fa=40 Hz 1 0 -1 0 0.1 0.2 0.3 0.4 fa=6 0.5Hz 0.6 0.7 0.8 0.9 1 0 0.1 0.2 0.3 0.4 fa=4 0.5Hz 0.6 0.7 0.8 0.9 1 0 0.1 0.2 0.3 0.4 0.6 0.7 0.8 0.9 1 1 0 -1 1 0 -1 AT 2006 0.5 9 Teorema de Nyquist • Apenas ficar com algumas amostras do sinal não leva a perder informação contida no sinal analógico ? – Nyquist mostrou que sinais com largura de banda limitada – que contêm apenas uma certa gama de frequências – podem ser reconstruídos EXACTAMENTE do sinal amostrado desde que a FREQUÊNCIA DE AMOSTRAGEM SEJA O DOBRO da maior frequência contida no sinal AT 2006 10 Exemplo • Seja 100 Hz a frequência mais elevada contida num sinal analógico – Qual deve ser a frequência de amostragem a utilizar ? – Estes 100 Hz podem corresponder a algum sinal que conhece da área da voz ? • E no caso do sinal de voz ? AT 2006 11 Aliasing O que acontece se não se respeitar o Teorema ? AT 2006 12 “Aliasing” • Se usarmos uma frequência inferior a 2x a maior frequência contida no sinal ocorre o chamado “aliasing” • Exemplo: – Sinusóide de 14 Hz – Sinusóide de 4 Hz – Ambas amostradas a 10 Hz – Amostras são as mesmas AT 2006 1 0.5 0 -0.5 -1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 1 0.5 0 -0.5 -1 13 O que acontece se não se amostra suficientemente rápido? x(t)=A cos (2f0t+) se amostramos com um período Ts obtemos x[n]=x(nTs)=A cos (2f0nTs+) 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 (2f0 nTs+ 2 k fs Ts+) = A cos (2f0 nTs+ 2 k +) = A cos (2f0 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 ! AT 2006 14 O que acontece se não se amostra suficientemente rápido? Considermos uma sinusóide de frequência f: x(t)=A cos (2f0t+) se amostramos com um período Ts obtemos x[n]=x(nTs)=A cos (2f0nTs+) 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 (2f0 nTs+ 2 k fs Ts+) = A cos (2f0 nTs+ 2 k +) = A cos (2f0 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 ! AT 2006 15 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 AT 2006 16 Uma segunda fonte de “aliasing” - “folding” Considerando sinusóide de freq. f: x(t)=A cos (2f0t+) se amostramos com um período Ts obtemos x[n]=x(nTs)=A cos (2f0nTs+) 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 (-2f0 nTs+ 2 k fs Ts+) = A cos (-2f0 nTs+ 2 k +) = A cos (2f0 nTs +) % porque cos(- )=cos() = x[n] w[n] tem as mesmas amostras que x[n] sendo impossível distingui-la de x[n]. AT 2006 17 Porquê “folding” freq. aparente 1000 1000 2000 Frequência real AT 2006 18 Aliasing • Sendo f a frequência de um sinal e a frequência de amostragem fs, 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 amostrado fa = fs - f • f > fs • Ocorre “aliasing”. Para obter a frequência do sinal amostrado obter o resto da divisão de f por f. No final se ½fs < f < fs o sinal amostrado fa = fs - f ; caso contrário fa = f AT 2006 19 Aliasing freq digital 5k 5k AT 2006 10k 15k freq real 20 Quantização AT 2006 21 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 – 3 bits dá para representar 8 números diferentes • 000 001 010 011 100 101 110 111 • Este processo designa-se por quantização AT 2006 22 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. AT 2006 23 Exemplo de quantização • 8 bits 1 0 -1 • 7 bits 1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 0 -1 • 3 bits 1 0 -1 • 2 bits 1 0 -1 AT 2006 24 Em Matlab t=0:1e-3:4 x= sin (2*pi*10*t)+1 % para ser entre 0 e 1 bits=1 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 ... AT 2006 25 Resultados 4 bits 2 bits erro 8 bits AT 2006 26 Exemplo •3 bits AT 2006 27 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) AT 2006 28 Erro de arredondamento e bits 1 •N=níveis • = distância entre níveis -1 N=2/ N =2 =2/N Erro máximo de arredondamento é = /2=1/N logo N=1/ número de bits (b) b log2 N AT 2006 29 SNR devido a quantização SNR= 20 log10 (App/) como A=2 e N=2b temos = 2-b App/= 2 x 2b = 2b+1 logo 20 log10 (2b+1) = 20 (b+1) log10 (2) 6 (b+1) dB aumento de 6 dB/bit AT 2006 30 Em Matlab % RETOMANDO O EXEMPLO ANTERIOR t=0:1e-3:4; x= sin (2*pi*10*t); bits=9; 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 ? AT 2006 31 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 AT 2006 32 Quantos Hz ? Quantos bits ? • Para sinal de voz ? • Para música (CD) ? – Quais os valores utilizados pelos leitores de CD ? – E pelos DATs ? • Para sinal medindo a abertura e fecho das cordas vocais ? • Para sinal gravado via telefone ? AT 2006 33 Representação de sinais digitais • Depois da amostragem e quantização ficamos com uma lista de números que facilmente se podem tratar em programas como o SFS e o Matlab – As sinusóides que temos vindo a ver são de facto listas de números como a seguinte: • AT 2006 0 0.0251 0.0502 0.0753 0.1004 0.1253 0.1502 0.1750 0.1997 0.2243 .... 34 Conversão D/A AT 2006 35 Reconstrução com impulsos quadrados – “hold” AT 2006 36 Operações com sinais AT 2006 37 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 AT 2006 38 Operações na variável independente • Mudança da escala temporal x(t) – y(t)= x (a t) x(2t) t a>1 => compressão 0<a<1 => expansão •Alguma ideia de aplicação na área da fala? AT 2006 t x(t/2) t 39 Operações na variável independente x(t) • inversão temporal y(t)= x (- t) -t1 t2 t y(t)=x(-t) -t2 AT 2006 t1 t 40 Som em Matlab >> Ver Matlab num Instante AT 2006 41 Sumário • Geração de som com o Matlab – Funções do Matlab para manipular sons •sound/ soundsc •wavread •wavwrite – Geração de sons artificais • • • • AT 2006 ruído sinusóides soma de duas sinusóides sinusóides de frequência variável 42 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! AT 2006 43 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. A função soundsc normaliza o vector para ter máximo igual a 1.0 AT 2006 44 Função wavread A função wavread lê um ficheiro de som em formato “wav” do Windows. Sintaxe [x,fa,bits]= wavread(’ficheiro’) em que x é um vector , fa é a frequência de amostragem utilizada bits o número de bits e ‘ficheiro’ é o ficheiro de som que se pretende ler. AT 2006 45 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. AT 2006 46 Exemplo: ficheiro de som Neste exemplo pretende-se ler para um vector um som armazenado num ficheiro e reproduzilo no Matlab [x,fa]= wavread('som.wav'); sound(x,fa) AT 2006 % ou soundsc(x,fa) 47 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'); AT 2006 48 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) AT 2006 49 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; sound(x,8000); AT 2006 % Ruído de média nula 50 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*1000*t); % sinusóide de 400Hz sound(x,fa); =2f AT 2006 51 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); AT 2006 52 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); AT 2006 53 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) AT 2006 54 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) AT 2006 55 TPC • Leitura dos 2 capítulos relativos a sinais do livro Rosen & Howell – disponíveis em forma digital AT 2006 56