Home > DSP, Programação > Simple Audio Efects in Python

Simple Audio Efects in Python

Um código simples, que demonstra como inverter um sinal de áudio gravado em python e como  criar samples com Pitch alterado …

import pyaudio
import numpy as np
import wave
import struct

chunk = 1024
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 41000
RECORD_SECONDS = 5
swidth = 2

p = pyaudio.PyAudio()

stream = p.open(format = FORMAT,
    channels = CHANNELS,
    rate = RATE,
    input = True,
    output = True,
    frames_per_buffer = chunk)

print “***gravando”,RECORD_SECONDS,”Segundo(s)***”

all = []
signal=[]

for i in range(0, RATE / chunk * RECORD_SECONDS):

    data = stream.read(chunk)
    all.append(data)
    stream.write(data, chunk)

print “***Pronto***”

stream.stop_stream()
stream.close()
p.terminate()

WAVE_OUTPUT_FILENAME = “Original.wav”
data = ”.join(all)
wf = wave.open(WAVE_OUTPUT_FILENAME, ‘wb’)
wf.setnchannels(CHANNELS)
wf.setsampwidth(p.get_sample_size(FORMAT))
wf.setframerate(RATE)
wf.writeframes(data)
wf.close()

####Bad Voice####

WAVE_OUTPUT_FILENAME = “bad_voice.wav”
data = ”.join(all)
data = np.array(wave.struct.unpack(“%dh”%(len(data)/swidth), data))*2
wf = wave.open(WAVE_OUTPUT_FILENAME, ‘wb’)
wf.setnchannels(CHANNELS)
wf.setsampwidth(p.get_sample_size(FORMAT))
wf.setframerate(RATE)
wf.writeframes(data)
wf.close()

spf = wave.open(‘bad_voice.wav’, ‘rb’)

p = pyaudio.PyAudio()

stream = p.open(format =
                p.get_format_from_width(spf.getsampwidth()),
                channels = spf.getnchannels(),
                rate = spf.getframerate(),
                output = True)

data = spf.readframes(chunk)

print “***Escutando bad voice***”

while data != ”:
    stream.write(data)
    data = spf.readframes(chunk)

stream.close()
p.terminate()

print “Aguarde…”
####Inverse sample####

spf = wave.open(‘Original.wav’, ‘rb’)
Getsignal = spf.readframes(-1)
Getsignal = np.fromstring(Getsignal, ‘Int16′)
spf.close

for resultado in np.flipud(Getsignal):
     signal.append(resultado)

signal = np.array(signal)
WAVE_OUTPUT_FILENAME = “inverse.wav”
wf = wave.open(WAVE_OUTPUT_FILENAME, ‘wb’)
wf.setnchannels(CHANNELS)
wf.setsampwidth(p.get_sample_size(FORMAT))
wf.setframerate(RATE)

for s in signal:
        wf.writeframes(struct.pack(‘h’, int(s)))
wf.close()

spf = wave.open(‘inverse.wav’, ‘rb’)

p = pyaudio.PyAudio()

stream = p.open(format =
                p.get_format_from_width(spf.getsampwidth()),
                channels = spf.getnchannels(),
                rate = spf.getframerate(),
                output = True)

data = spf.readframes(chunk)

#se vc gravar alo escutara ola
print “***Escutando em modo inverso***”

while data != ”:
    stream.write(data)
    data = spf.readframes(chunk)

stream.close()
p.terminate()

Eng Eder de Souza

About these ads
CategoriasDSP, Programação
  1. Nenhum comentário ainda.
  1. Nenhum trackbacks ainda.

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

WordPress.com Logo

Você está comentando usando sua conta WordPress.com. Sair / Mudar )

Imagem do Twitter

Você está comentando usando sua conta Twitter. Sair / Mudar )

Foto do Facebook

Você está comentando usando sua conta Facebook. Sair / Mudar )

Conectando a %s

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.

%d bloggers like this: