PySoundFile é um módulo Python usado para ler e escrever arquivos de áudio, veja um arquivo de áudio como array NumPy, incluindo tons e tudo. Este módulo pode ler o arquivo de áudio, ou seja, extrai o array NumPy do áudio (arquivos .wav) e também pode gravá-lo

Instalação : execute o seguinte comando pip:

pip install PySoundFile

PySoundFile suporta todos os formatos que libsndfile suporta, por exemplo arquivos WAV, FLAC, OGG e MAT

Aqui está o link do arquivo de áudio usado no link de exemplos

Lendo arquivo de áudio:



Os arquivos de áudio podem ser lidos usando a função read() .

Sintaxe: read (file, frames = -1, start = 0, stop = None, fill_value = None, samplerate = None, channels = None, subtipo = None)

Parâmetros: 

  • arquivo: caminho do arquivo de áudio
  • frames : Este argumento é usado para especificar o número de frames a serem lidos, por padrão tem valor -1 indicando todo o arquivo a ser lido
  • iniciar, parar : Para especificar o início e o fim da leitura do arquivo de áudio, por padrão, todo o arquivo é lido
  • fill_value : Se houver menos dados restantes no arquivo do que os solicitados, o restante dos quadros serão preenchidos com fill_value. Se nenhum fill_value for especificado, a matriz menor será retornada

Retorna: 2 valores

  • dados: matriz numpy (o comprimento deve ser 44.100 elementos) Se o retorno for uma matriz numpy 1-D, a leitura de áudio será mono canalizada
  • taxa de amostragem : taxa de amostragem (ou “taxa de amostragem”) define quantas vezes por segundo um som é amostrado. Tecnicamente, é a frequência das amostras usadas em uma gravação digital. A taxa de amostragem padrão usada para CDs de áudio é de 44,1 quilohertz para este arquivo também

Formatos de arquivo suportados: WAV, AIFF, AU, PAF, SVX, NIST, VOC, IRCAM, W64, MAT4, MAT5, PVF, XI, HTK, SDS, AVR, WAVEX, SD2, FLAC, CAF, WVE, OGG, MPC2K, RF64     

Exemplo: Estaremos lendo o seguinte arquivo: 

[se for IE 9]>
import soundfile as sf 
data, samplerate = sf.read('noice.wav') 
print(data) 
print("---------------------") 
print("Sample Rate is ", samplerate) 
print("---------------------") 
print("Done")

Resultado:



Escrevendo um arquivo: podemos escrever um arquivo usando a função write() .

Sintaxe: write (file, data, samplerate, subtype = None, endian = None, format = None, closefd = True)

Parâmetros: 

  • arquivo: caminho do arquivo de saída
  • dados: dados a serem gravados
  • taxa de amostragem : taxa de amostragem dos dados de áudio

Retorna: Nada

Para escrever um arquivo de áudio, precisamos do array NumPy (ou seja, dados), pois a taxa de amostragem tem valor padrão, ele abre o arquivo no modo wb, ou seja, se o mesmo nome existir, o programa irá reescrevê-lo  

Exemplo: Estaremos lendo o seguinte arquivo:

import soundfile as sf 
data, samplerate = sf.read('Sample.wav') 
sf.write('writing_file_output.wav', data, samplerate) 
  

Saída: Este é o arquivo de saída: