A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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

Apresentações semelhantes


Apresentação em tema: "Conceitos de Sinais e Sistemas Mestrado em Ciências da Fala e da Audição António Teixeira."— Transcrição da apresentação:

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

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

3 Ver Matlab num Instante
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 [x,fa]= wavread(’ficheiro’)
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 wavwrite(x,fa,’ficheiro’)
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) Corre aqui o código ouvir1

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'); ouvir2

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); Copiar para o Matlab e alterar a frequência da segunda sinusóide Fazer o plot do resultado e falar da afinação de violas e outros intrumentos musicais

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) ouvir3

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 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

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 : Mostrar no quadro as combinações possíveis com 2 bits 8 Bits 256 palavras :

28 Capacidade de representação
Exemplo do número de estados possíveis possíveis para 3 bits b2 b1 b0 1

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 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 16 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= )

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  =  =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 % valor do erro máximo de arredondamento neste caso concreto
% 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 Operações na variável independente
Mudança da escala temporal y(t)= x (a t) t x(t) t x(2t) a>1 => compressão 0<a<1 => expansão t x(t/2) Alguma ideia de aplicação na área da fala?

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

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”
Letra “W”: 5x16+7=87= Mostrar nesta altura que se premir a tecla “alt” e digitar o código ascii no teclado numérico pequeno que aparece o caracter correspondente.

49 Código ASCII 32 48 64 @ 80 P 96 ` 112 p 33 ! 49 1 65 A 81 Q 97 a 113 q 34 50 2 66 B 82 R 98 b 114 r 35 # 51 3 67 C 83 S 99 c 115 s 36 $ 52 4 68 D 84 T 100 d 116 t 37 % 53 5 69 E 85 U 101 e 117 u 38 & 54 6 70 F 86 V 102 f 118 v 39 55 7 71 G 87 W 103 g 119 w 40 ( 56 8 72 H 88 X 104 h 120 x 41 ) 57 9 73 I 89 Y 105 i 121 y 42 * 58 : 74 J 90 Z 106 j 122 z 43 + 59 ; 75 K 91 [ 107 k 123 { 44 , 60 < 76 L 92 \ 108 l 124 | 45 - 61 = 77 M 93 ] 109 m 125 } 46 . 62 > 78 N 94 ^ 110 n 126 ~ 47 / 63 ? 79 O 95 _ 111 o 127 DEL

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

51 UNICODE O código ASCII possui a grande desvantagem de apenas permitir a representação de 28=256 símbolos diferentes. O código UNICODE pretende normalizar a codificação dos caracteres utilizados por todas as escritas existentes no mundo. Utiliza 16 bits para codificar cada caracter e encontra-se disponível nos sistemas informáticos mais recentes. Mais informações em Mostrar aqui o Insert Symbol do Word e uma font unicode Mostrar este pdf com os caracteres chineses

52 Códigos binários Para representar números com bits é possível encontrar uma forma mais compacta do que a codificação ASCII. No sistema decimal utilizado para realizar cálculo, os números são representados fazendo uso da sua posição relativa: Base 10

53 Códigos binários Se modificarmos a base de decimal para binária podemos utilizar o mesmo tipo de representação: Note-se que o número anterior tem o valor em decimal de =9, sendo por isso uma das possíveis representações de números decimais em binário

54 Formato exponencial decimal
Em formato decimal é útil representar os números utilizando a notação exponencial: Mantissa Expoente

55 Formato exponencial binário
No formato exponencial binário a mantissa e a base são representados em formato binário na base 2. Mantissa Expoente

56 Formato numérico no Matlab
O Matlab utiliza 64 bits para representar os números: 52bits para a mantissa e 12 para o expoente. A representação dos números é feita utilizando um formato exponencial que permite uma gama dinâmica muito grande.

57 Norma IEEE754 Precisão simples (32 bits, Bias = 127)
Precisão dupla (64 bits, Bias = 1023) Precisão extendida (80, Bias = 32767) S Expoente Mantissa 31 23 22 S Expoente Mantissa 63 52 51 S Expoente Mantissa 79 64 63

58 Consequências... É finito o universo de representação numérica
Problemas de resolução Erros de arredondamento Propagação durante computação. Recta real Números representáveis Mostrar aqui exemplos do tipo sin(pi), sin(1e20*pi)


Carregar ppt "Conceitos de Sinais e Sistemas Mestrado em Ciências da Fala e da Audição António Teixeira."

Apresentações semelhantes


Anúncios Google