Início > 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

Categorias:DSP, Programação
  1. junho 8, 2016 às 8:28 am

    In this script..

    GetStream(chunk)

    is struct…

    in the above python script what might be the problem..while get ing stream…

    Please help me friend…

  1. No trackbacks yet.

Deixe uma resposta

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

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: