sounddevice reproducir from python python-2.7 audio soundcard

reproducir - Lectura de la señal de sonido de entrada usando Python



reproducir audio en python (4)

Necesito obtener una señal de sonido de un micrófono conectado a un conector y usar los datos para el procesamiento inmediato en Python.

El procesamiento y los pasos posteriores son claros. Estoy perdido solo en obtener la señal del programa. El número de canales es irrelevante, uno es suficiente. No voy a reproducir el sonido, por lo que no debería haber necesidad de ASIO en la tarjeta de sonido.

Mi pregunta es: ¿cómo puedo capturar el audio de Jack desde Python? (Sería fantástico si hubiera un paquete, ejemplos bien documentados y nichos :-).


¿Está planeando obtener audio de micrófono en piezas o transmisión? En cualquier caso, el sounddevice puede ser empleado.

Puedes instalar el módulo python usando
pip install sounddevice --user

Por favor, consulte el sitio oficial para obtener detalles de la API.

El dispositivo de sonido grabará el audio del micrófono de su computadora portátil (entrada de audio estándar) y lo reproducirá en el altavoz o los auriculares (salida de audio estándar). Puede utilizar el objeto de sonido para su posterior procesamiento.

import sounddevice as sd import numpy as np import scipy.io.wavfile as wav fs=44100 duration = 5 # seconds myrecording = sd.rec(duration * fs, samplerate=fs, channels=2,dtype=''float64'') print "Recording Audio" sd.wait() print "Audio recording complete , Play Audio" sd.play(myrecording, fs) sd.wait() print "Play Audio Complete"

Aquí está la salida: Python 2.7.9 (predeterminado, 10 de diciembre de 2014, 12:24:55) [MSC v.1500 32 bit (Intel)] en win32 Escriba "copyright", "credits" o "license ()" para más información. ================================ RESTART ================= ==

Grabación de audio
Grabación de audio completa, reproducir audio
Reproducir audio completo


¿Has probado pyaudio ?
Para instalar: python -m pip install pyaudio
Ejemplo de grabación, desde la web oficial:

"""PyAudio example: Record a few seconds of audio and save to a WAVE file.""" import pyaudio import wave CHUNK = 1024 FORMAT = pyaudio.paInt16 CHANNELS = 2 RATE = 44100 RECORD_SECONDS = 5 WAVE_OUTPUT_FILENAME = "output.wav" p = pyaudio.PyAudio() stream = p.open(format=FORMAT, channels=CHANNELS, rate=RATE, input=True, frames_per_buffer=CHUNK) print("* recording") frames = [] for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)): data = stream.read(CHUNK) frames.append(data) print("* done recording") stream.stop_stream() stream.close() p.terminate() wf = wave.open(WAVE_OUTPUT_FILENAME, ''wb'') wf.setnchannels(CHANNELS) wf.setsampwidth(p.get_sample_size(FORMAT)) wf.setframerate(RATE) wf.writeframes(b''''.join(frames)) wf.close()

Este ejemplo funciona en mi computadora portátil con Python 2.7.11 (y 3.5.1) en Windows 8.1, pyaudio 0.2.9.


Consideraría usar pysox , los enlaces de python para libsox.

Puedes obtener el paquete pysox desde PyPI.


Si el requisito es Jack , entonces es posible que desee utilizar PyJack , que es el enlace de Python para Jack.

Además, el código fuente tiene un ejemplo de lo que desea hacer, es decir, capturar audio. Ver el archivo capture.py

Debe considerar que para evitar perder un bloque, debe llamar a jack.process cada 500 *(buffer_size/sample_rate) milisegundos. jack.process lanza excepciones cuando pierde los bloques de audio ( jack.InputSyncError y jack.OutputSyncError ).