>> Tecnologia Eletrônica >  >> Áudio Pessoal >> Gravadores de Voz Digitais

Como posso criar uma forma de onda a partir do áudio?

Criar uma visualização da forma de onda a partir do áudio envolve várias etapas, e a complexidade depende do nível desejado de detalhes e sofisticação. Aqui está um colapso do processo, variando de métodos simples a avançados:

1. Método simples (usando bibliotecas):

Essa abordagem é a mais fácil e não requer conhecimento profundo de processamento de áudio. Você aproveitará as bibliotecas que lidam com o trabalho pesado para você. Veja como você faria isso usando o Python com as bibliotecas `Librosa` e` Matplotlib ':

`` `Python
Importar Librosa
importar librosa.display
importar matplotlib.pyplot como pLT

Carregue o arquivo de áudio


AUDIO_FILE ="YOUR_AUDIO_FILE.WAV" # Substitua pelo caminho do arquivo de áudio
y, sr =Librosa.load (audio_file)

Exiba a forma de onda


plt.figure (figSize =(14, 5))
Librosa.display.waveShow (y, sr =sr)
plt.title ("forma de onda")
plt.xlabel ("Hora (s)")
plt.ylabel ("amplitude")
plt.show ()
`` `

Antes de executar este código:

* Instale as bibliotecas necessárias: `pip install librosa matplotlib`
* Substitua `" your_audio_file.wav "`: com o caminho real para o seu arquivo de áudio. O arquivo deve ser um arquivo WAV para melhor compatibilidade. O Librosa pode lidar com outros formatos, mas o WAV geralmente é preferido para esta tarefa.


2. Método intermediário (processamento manual):

Isso fornece mais controle, mas requer a compreensão dos fundamentos do áudio. Você trabalhará diretamente com os dados de áudio:

`` `Python
onda de importação
importar numpy como np
importar matplotlib.pyplot como pLT

Abra o arquivo WAV


com wave.open ("your_audio_file.wav", "rb") como wf:
num_Channels =wf.getnchannels ()
sample_width =wf.getsampwidth ()
frame_rate =wf.getframate ()
num_frames =wf.getnframes ()
dados =wf.readframes (num_frames)

Converta os dados em matriz numpy


Data =np.Fombuffer (Data, dType =np.int16) # Ajuste dType se amostra_width for diferente

Se estéreo, converta em mono (canais médios)


Se num_Channels ==2:
dados =np.mean (data.rehape (-1, 2), eixo =1)

Normalize os dados


Data =dados / np.max (np.abs (dados))

Vetor de tempo


time =np.arange (0, num_frames) / frame_rate

Plote a forma de onda


plt.figure (figSize =(14, 5))
PLT.Plot (tempo, dados)
plt.title ("forma de onda")
plt.xlabel ("Hora (s)")
plt.ylabel ("amplitude")
plt.show ()

`` `

Este código:

* Abre o arquivo WAV usando o módulo `Wave`.
* Lê os dados de áudio bruto.
* Converte -o em uma matriz Numpy para facilitar a manipulação.
* Lida com o áudio estéreo, calculando a média dos canais para criar uma forma de onda mono.
* Normaliza os dados para um intervalo entre -1 e 1 para uma melhor visualização.
* Cria um vetor de tempo para plotagem.
* Plota a forma de onda usando `matplotlib`.


3. Métodos avançados (FFT, Spectrograms):

Para uma análise mais detalhada, você pode usar a transformada rápida de Fourier (FFT) para analisar os componentes de frequência do sinal de áudio, criando espectrogramas. Bibliotecas como 'Librosa` e `Scipy` fornecem implementações eficientes da FFT. Isso está além do escopo de uma explicação simples, mas envolve a transformação do sinal no domínio do tempo no domínio da frequência para visualizar as frequências ao longo do tempo. `Librosa.Feature.mel_spectrogram 'da Librosa é um ótimo ponto de partida para isso.

Escolhendo o método certo:

* Método simples: Melhor para visualizações rápidas da forma de onda sem precisar de profundo entendimento de áudio.
* Método intermediário: Fornece mais controle e insight sobre os dados de áudio bruto.
* Método avançado: Necessário para análise e visualização detalhadas de frequência (espectrogramas).


Lembre -se de instalar as bibliotecas necessárias antes de executar qualquer um desses códigos. Escolha o método que melhor se adapte às suas necessidades e ao nível de entendimento. Os exemplos acima usam Python, mas funcionalidade semelhante pode ser alcançada em outras linguagens de programação, como JavaScript (usando bibliotecas como API de áudio da Web) ou C ++ (usando bibliotecas como SDL).