2014-06-06 4 views
0

파이썬의 입력에 사운드를 직접 재생할 수 있는지 궁금합니다. 나는 리눅스를 사용하고, 그와 나는 OSS, ALSA, 및 펄스 오디오입력 스트림에 사운드를 재생하는 방법

을 사용하고
+0

해결하려는 실제 문제는 무엇입니까? –

+0

나는 사운드 파일을 가지고 있는데, 그 사운드 파일을 출력 스트림이 아닌 입력 스트림/캡처 스트림으로 재생하려고합니다. – Natecat

+0

그리고 왜 그것을 입력 스트림에 갖고 싶습니까? –

답변

2
당신은 확실히 파이썬 여기

사인파를 생성하는 예제 코드는 사운드를 재생 (및 생성) 할 수

, 기본 ALSA 재생 장치를 엽니 다 및 pyth에서 찾을 수 있습니다 재생은

#!/usr/bin/env python3 
import math 
import struct 
import alsaaudio 
from itertools import * 

def sine_wave(frequency=440.0, framerate=44100, amplitude=0.5): 
    """Stolen from here: http://zacharydenton.com/generate-audio-with-python/""" 
    period = int(framerate/frequency) 
    if amplitude > 1.0: amplitude = 1.0 
    if amplitude < 0.0: amplitude = 0.0 
    lookup_table = [float(amplitude) * math.sin(2.0*math.pi*float(frequency)*(float(i%period)/float(framerate))) for i in range(period)] 
    return (lookup_table[i%period] for i in count(0)) 

sound_out = alsaaudio.PCM() # open default sound output 
sound_out.setchannels(1) # use only one channel of audio (aka mono) 
sound_out.setrate(44100) # how many samples per second 
sound_out.setformat(alsaaudio.PCM_FORMAT_FLOAT_LE) # sample format 

for sample in sine_wave(): 
    # alsa only eats binnary data 
    b = struct.pack("<f", sample) # convert python float to binary float 
    sound_out.write(b) 

을 통해 사인파 또는 당신은 당신의 스피커

#!/usr/bin/env python3 
import struct 
import alsaaudio 

sound_out = alsaaudio.PCM() # open default sound output 
sound_out.setchannels(1) # use only one channel of audio (aka mono) 
sound_out.setperiodsize(5) # buffer size, default is 32 

sound_in = alsaaudio.PCM(type=alsaaudio.PCM_CAPTURE) # default recording device 
sound_in.setchannels(1) # use only one channel of audio (aka mono) 
sound_in.setperiodsize(5) # buffer size, default is 32 

while True: 
    sample_lenght, sample = sound_in.read() 
    sound_out.write(sample) 

더 많은 예제에 마이크를 루프백 수 있습니다 on alsaaudio 라이브러리 http://pyalsaaudio.sourceforge.net/libalsaaudio.html

+0

이 질문에 대답하지 않습니다. –

+0

하지만 그럼에도 불구하고 유용합니다 :) – starfry

-1

나는 그것이 "파이썬"에 들어간 후에 무엇을하고 싶은지에 달려 있다고 생각한다. 나는 확실히 scikits.audiolab 라이브러리를 살펴볼 것입니다. 그게 당신이 소리를내는 과정의 스펙트로 그램을 그리기 원한다면 사용할 수있는 것입니다 (나는 당신이 원하는 것을 추측하고 있습니다).

관련 문제