Sistemas e Sinais Guião das Aulas Práticas António Navarro João Manuel Rodrigues Rui Alves Departamento de Electrónica, Telecomunicações e Informática Universidade de Aveiro 2006-2007 AULA 1 Sinais (Unidimensionais) Resumo: • Familiarização com o ambiente de trabalho. • Manipulações simples de sinais digitais unidimensionais. Este guião é um trabalho em progresso e, por isso, ainda incompleto. Na página das aulas práticas de SS 1 poderá encontrar a última versão deste guião 2 , bem como outras informações e dados referentes às aulas práticas de Sistemas e Sinais. Se detectar algum erro ou tiver alguma sugestão, por favor informe os autores. Exercício 1.1 Coloque o conteúdo do ficheiro aula1.zip na sua área de trabalho. Localize o ficheiro santos.wav e ouça-o usando uma aplicação apropriada. Observe a página de propriedades desse ficheiro e registe os parâmetros fundamentais do sinal: frequência de amostragem, número de canais, número de bits por amostra, duração. A partir destes valores, determine o número de bytes ocupados pela informação áudio e compare-o com a dimensão do ficheiro. (Além da informação áudio, os ficheiros WAV têm um cabeçalho que ocupa algumas dezenas de bytes.) Exercício 1.2 No MATLAB, pode ler o ficheiro santos.wav para uma matriz, usando o comando [x,fa,nb] = wavread('santos.wav'); onde x é o vector ou matriz que fica com as amostras do sinal, fa indica a frequência de amostragem e nb indica o número de bits de resolução de cada amostra. Com o comando sound(x,fa,nb); pode ouvir o sinal x através da placa de som, a um ritmo de fa amostras por segundo e com resolução de nb bits. Há vários pormenores a ter em conta quando se usa esta função: por um 1 http://www.av.it.pt/rpedro/ss/ 2 http://www.av.it.pt/rpedro/ss/guiao.pdf -2- lado, o sinal x deve ter valores pertencentes ao intervalo [-1,+1[, caso contrário será ouvido com distorção; por outro lado, não é garantido que a placa de som e/ou o sistema operativo suportem frequências de amostragem ou resoluções arbitrárias. 3 Usando comandos do MATLAB, A. Determine o número de canais desse sinal (ou seja, se é mono- ou estereofónico) e o número de amostras por canal. B. Calcule a duração do sinal. C. Determine o número exacto de bytes ocupados pelas amostras do sinal. D. Quantos minutos de áudio neste formato poderia gravar num CD (de 700 MB) 4 ? E num DVD (de 4.7 GB)? E. Determine os valores máximo e mínimo do sinal em cada canal. F. Multiplique o sinal por 1/10 e ouça o resultado. Que diferença notou? G. Multiplique o sinal por 10 e ouça o resultado. Que aconteceu? Exercício 1.3 Crie uma versão monofónica fazendo a média dos dois canais do sinal x e grave o resultado usando o comando wavwrite(y,fa,nb, 'santos-mono.wav'); sendo y o sinal monofónico criado. Verifique as propriedades do novo ficheiro. Exercício 1.4 Traçe um gráfico (das primeiras 1000 amostras) do sinal x com o eixo do tempo marcado em segundos. Explore o gráfico, ampliando diversas zonas com o comando axis ou usando as possibilidades de zoom fornecidas pelo MATLAB. Sugestão: crie primeiro um vector t com comprimento igual ao do sinal e contendo os valores dos instantes de amostragem correspondentes. 3 Algumas frequências de amostragem mais usualmente suportadas são: 44100 amostras/s, 8000 amostras/s, e outras relacionadas com estas como 22050, 11025, 16000, 32000 e 48000 amostras/s. Resoluções de 16 ou 8 bits/amostra são usuais, algumas placas mais recentes permitem até 24 bits/amostra. 4 Para informação mais detalhada sobre capacidades de CDs e DVDs consultar por exemplo: http://en.wikipedia.org/wiki/CD-ROM ou http://www.osta.org/technology/cdqa7.htm . -3- Exercício 1.5 A partir do sinal lido anteriormente: A. Crie um novo sinal composto apenas pelas amostras de índice par. B. Ouça o novo sinal, mantendo a frequência de amostragem e a resolução. Que aconteceu ao sinal? (No que diz respeito à duração e tonalidade.) C. Ouça-o novamente, especificando agora um ritmo de amostagem de metade do original. Exercício 1.6 Apesar de as amostras dos sinais áudio serem armazenadas no MATLAB como números reais entre -1 e +1, no ficheiro original são de facto armazenadas como números inteiros com nb dígitos binários. Ao ler esses números, o comando wavread do MATLAB divide-os pela máxima amplitude que pode ser codificada com nb bits, ou seja 2nb-1 (para números com sinal). Assim, as amplitudes do sinal ficam normalizadas: um sinal de amplitude máxima terá sempre amplitude 1 no MATLAB, independentemente da resolução usada na gravação do sinal. Execute o comando x(1:20,:) para observar os valores das primeiras 20 linhas da matriz x. Multiplique por 215 = 32768 e verifique que os valores resultantes são inteiros. Exercício 1.7 O ficheiro santosC.mp3 é uma versão do sinal santos.wav, codificado no formato MPEG-Layer III com um débito de 128 kbit/s. 5 A respectiva descodificação produziu o ficheiro santosD.wav. A. Leia o sinal descodificado e compare-o com o original. B. Determine o desfasamento (atraso) entre os dois sinais. (Pode fazê-lo “manualmente”, por tentativa e erro e recorrendo a gráficos. Como desafio, pense como poderia automatizar este processo e escreva uma função que o faça.) C. Calcule e ouça a diferença dos dois sinais depois de compensar o seu desfasamento. D. Determine a potência (energia média por amostra) do sinal original e do sinal diferença, e ache a relação sinal-ruído (SNR), expressando-a em dB (decibel). 6 E. Determine a taxa de compressão. F. Quantos minutos de áudio neste formato poderia gravar num CD (de 700 MB)? E num DVD (de 4.7 GB)? G. A partir do ficheiro santosD.wav diminua o número de bits por amostra gradualmente e ouça o resultado. Tire conclusões. H. Para o número de bits por amostra que considera aceitável, e para a mesma taxa de 5 Foi usado o codificador http://lame.sourceforge.net/LAME, versão 3.96.1, com a opção -h. 6 O decibel é uma unidade de medida logarítmica de uma relação de potências. Assim, se dois sinais têm potências P1 e P2, a sua relação de potências é de 10 log 10 ( P1 / P2 ) dB. -4- compressão, determine o débito. Exercício 1.8 Considere o ficheiro santos.wav. A. O empacotamento para trasmissão de pacotes na rede de computadores conduz a um acrescento de 30 bytes de cabeçalho por pacote. Para um payload de 150 bytes, determine o débito de transmissão. B. Quantos minutos de áudio neste formato empacotado poderia gravar num CD (de 700 MB)? E num DVD (de 4.7 GB)? C. Repita as duas alíneas anteriores para o ficheiro santosC.mp3. D. Determine o tamanho do payload para um débito de 140 kbit/s e para 160 kbit/s. Exercício 1.9 Considere o ficheiro santos.wav. A. Pretende-se transmitir este ficheiro empacotado em 30 (Cabeçalho)/150 bytes (Payload) de um computador para outro numa rede local de 1 Mbit/s. Calcule o tempo necessário para a transferência do ficheiro. B. Considere que estão 10 computadores a transmitir este ficheiro e que a taxa de colisão é de 10%. Determine o tempo total para que todas as 10 transferências tenham lugar. C. Repita as duas alíneas anteriores para o ficheiro santosC.mp3. D. Considere agora que os 10 computadores estão a transmitir na rede o áudio a partir de um CD (de 700 MB) e de um DVD (de 4.7 GB). Qual o tempo total de comunicação? -5-