$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

    View Slide

  2. Camilo Cunha de Azevedo
    Já trabalhei em algumas coisas com Python,
    mas hoje trabalho com infosec em Clojure.
    https://dev.to/cazevedo

    View Slide

  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.

    View Slide

  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.

    View Slide

  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.

    View Slide

  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.

    View Slide

  7. Formato Wave

    View Slide

  8. Pulse Code Modulation

    View Slide

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

    View Slide

  10. View Slide

  11. View Slide

  12. View Slide

  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.

    View Slide

  14. View Slide

  15. View Slide

  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.

    View Slide

  17. View Slide

  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.

    View Slide

  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.

    View Slide

  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?

    View Slide

  21. Obrigado!

    View Slide

  22. Dúvidas!?

    View Slide