Skip to content

Instantly share code, notes, and snippets.

@felipebastosweb
Last active June 8, 2025 04:43
Show Gist options
  • Save felipebastosweb/aca62e8ac6708a8be292eacf23028cfa to your computer and use it in GitHub Desktop.
Save felipebastosweb/aca62e8ac6708a8be292eacf23028cfa to your computer and use it in GitHub Desktop.
Grava audio do microfone para juntar no vídeo
import sounddevice as sd
import numpy as np
# Define as configurações do microfone (ajuste conforme necessário)
sample_rate = 44100 # Taxa de amostragem padrão
channels = 1 # 1 para mono, 2 para estéreo
# Inicia a gravação de áudio
def audio_callback(indata, frames, time, status):
# Adiciona o áudio a um array (usando NumPy para facilidade)
global audio_data
audio_data = np.append(audio_data, indata, axis=0)
# Define um flag para controlar a gravação
recording = True
# Inicializa o fluxo de áudio
with sd.InputStream(callback=audio_callback,
samplerate=sample_rate,
channels=channels) as stream:
# Inicia a gravação
audio_data = np.array([]) # Inicializa o array de áudio
while recording:
# (Potencialmente) pode fazer outras operações aqui, como
# - Processar o vídeo capturado e mostrar na tela
# - Checar se o usuário quer parar a gravação
# (Parar a gravação)
# Para parar a gravação, você pode definir a variável 'recording' como False
# e o loop `while` irá se interromper.
# Após a gravação, você tem o áudio em `audio_data`.
import pyaudio
import wave
# Defina os parâmetros de gravação
FORMAT = pyaudio.paInt16 # Tipo de dados (16 bits)
CHANNELS = 1 # Mono
RATE = 44100 # Taxa de amostragem
CHUNK = 1024 # Tamanho do buffer
DURATION = 5 # Duração da gravação
# Cria uma instância do PyAudio
p = pyaudio.PyAudio()
# Abre a stream de áudio
stream = p.open(format=FORMAT,
channels=CHANNELS,
rate=RATE,
input=True,
frames_per_buffer=CHUNK)
# Inicia a gravação
print("Começando a gravar...")
frames = []
for _ in range(0, int(RATE / CHUNK * DURATION)):
data = stream.read(CHUNK)
frames.append(data)
# Termina a gravação
print("Gravando o áudio...")
stream.stop_stream()
stream.close()
p.terminate()
# Salva o áudio em um arquivo WAV
wf = wave.open('gravacao_pyaudio.wav', 'wb')
wf.setnchannels(CHANNELS)
wf.setsampwidth(p.get_sample_size(FORMAT))
wf.setframerate(RATE)
wf.setnframes(0)
wf.writeframes(b''.join(frames))
wf.close()
print("Gravacao salva em gravacao_pyaudio.wav")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment