2017-12-01 64 views
0

pyaudioを使用してオーディオ録音と再生を試しています。PyAudioで複数のレイヤーをオーディオ録音に追加

私はファイルを録音できますが、その上にレイヤーを追加する必要があります。私がやろうとしているのは、10秒のファイルを記録してから再生を開始することです。

再生中も、追加の10秒のレイヤーを録音して、前の録音の上に追加します。

これをPythonで行う方法はありますか?

import pyaudio 
import wave 

CHUNK = 2 
FORMAT = pyaudio.paInt16 
CHANNELS = 2 
RATE = 44100 
RECORD_SECONDS = 3 
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(int(RATE/CHUNK * RECORD_SECONDS)) 

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() 

答えて

0

これを簡単に実行できる「PyDub」というモジュールが見つかりました。

http://pydub.com/

from pydub import AudioSegment 

track1 = AudioSegment.from_file(track1wav) 
track2 = AudioSegment.from_file(track2wav) 

combined = track1.overlay(track2) 
print ("overlaying recording") 
combined.export(track1wav, format='wav') 
関連する問題