$30 off During Our Annual Pro Sale. View Details »

Fazendo o Python cantar, como usar o módulo wave 🐍 🎶

Fazendo o Python cantar, como usar o módulo wave 🐍 🎶

Python é uma linguagem com "Baterias Inclusas" e contêm muitos módulos na Biblioteca da linguagem que nos permitem realizar múltiplas tarefas. Um desses módulos é o "wave" que nos permite manipular arquivos de áudio no formato .wav / .wave. Nessa apresentação é abordado princípios básicos sobre processamento de sinais de áudio e como utilizar o módulo wave para a manipulação de áudio.

Camilo de Azevedo

June 11, 2022
Tweet

More Decks by Camilo de Azevedo

Other Decks in Technology

Transcript

  1. Fazendo o Python Cantar como usar o módulo wave

  2. Camilo Cunha de Azevedo Já trabalhei em algumas coisas com

    Python, mas hoje trabalho com infosec em Clojure. https://dev.to/cazevedo
  3. Som • O som é uma onda que propaga-se pela

    vibração do ar. • Somos capazes de perceber o som porque o nosso aparelho auditivo traduz essas vibrações em estímulos elétricos que são interpretadas pelo nosso cérebro. • Existem duas medidas importantes que devemos conhecer sobre o som e que vamos ver ao longo da apresentação: amplitude e frequência. • Amplitude é o tamanho da onda e isso determina o quão alto o som é. • Frequência é a velocidade da onda e determina o tom do som e é medido em hertz.
  4. Tipos de Sinal • O som acústico tem a forma

    senoidal (formato de seno) e é a vibração que é formada quando é soprada uma flauta ou se vibra a corda da guitarra. • O sinal quadrático é o formato do som digital. • O sinal triangular é uma aproximação do som senoidal, que está mais próximo do senoidal, mas sem as harmônicas ainda um pouco digital. • O sinal sem forma sempre soa como um ruído, deformidades em qualquer onda também causam ruído.
  5. Tom de Concerto • “Tom de Concerto” ou “Lá 440”

    é a nota Lá na frequência de onda 440 hertz. • Essa nota tem sido usada para afinar instrumentos e é o “Hello World” no mundo das aplicações que trabalham com som digital.
  6. Formato wave • Formato de áudio criado em conjunto pela

    Microsoft e IBM. • É uma das variações do formato RIFF assim como outros formatos como AVI para vídeo ou WebP para imagens. • É definido por uma especificação de 44 bytes + dados que contém os metadados de como será lido o arquivo e as informações sobre o áudio.
  7. Formato Wave <http://soundfile.sapp.org/doc/WaveFormat/>

  8. Pulse Code Modulation <https://en.wikipedia.org/wiki/Pulse-code_modulation>

  9. Criando um tom de concerto com Python • Para criarmos

    um arquivo de áudio com esse formato usamos a biblioteca wave que vem instalada com o Python. ◦ https://docs.python.org/3/library/wave.html • As funções de leitura e escrita de arquivos são iguais às funções de leitura e gravação de arquivos, porém, que inserem corretamente os metadados nas posições corretas ao gravar e ler os arquivos (temos que informar alguns deles).
  10. None
  11. None
  12. None
  13. Lendo arquivos wave • Assim como usamos o módulo wave

    para escrever arquivos de áudio, podemos usá-lo para ler os arquivos de áudio e analisá-los / modificá-los. • Vamos usar as bibliotecas matplotlib e numpy para visualizar a onda gerada no arquivo wave como gráfico.
  14. None
  15. None
  16. Fazendo as outras notas • Para fazer outras notas apenas

    precisamos passar sua frequência correspondente a fim de gerar o som da nota que desejamos. • Para atingirmos 1 oitava abaixo dividimos a frequência por 2 e para atingir 1 oitava acima multiplicamos a frequência por 2.
  17. None
  18. Fazendo música • Cada instrumento tem um “alcance” ou seja

    o número de oitavas (frequências) que consegue produzir. • Dependendo da música que você quer produzir pode ser que queira simular um instrumento mais agudo ou grave, ou qualquer outro que esteja em uma frequência diferente da que estamos trabalhando. • Para fazer música, produzimos os sons das notas e então as empacotamos junto em um arquivo.
  19. Preciso disso? R: Não! • Esse é provavelmente o pior

    jeito de trabalhar com áudio em Python, como vimos sequer gerar uma nota que soe decente é necessário matemática avançada e muito trabalho. • Existem bibliotecas como scipy (que tem funções melhores para wave), pyo (que tem várias funções prontas para trabalhar com sinais de áudio), foxdot (que é uma biblioteca profissional para trabalhar com síntese de som)... e muitas outras alternativas que são mais fáceis de programar e mais produtivas.
  20. Então… por que? • É legal conhecer mais coisas que

    existem na biblioteca padrão. • É um exercício para quem quer aprender mais sobre áudio, sinais, física, matemática, música… • Porque não?
  21. Obrigado!

  22. Dúvidas!?