私はPythonを使用して、ラズベリーパイのサウンド入力と出力を再生していました。 私の計画は、マイクの入力を読み取り、それを操作し、操作された音声を再生することでした。現時点では、オーディオを読み込んで再生しようとしました。 最後のステップで読み込んだデータをウェーブファイルに書き込んだので、読み込みがうまくいくように見えました。ウェーブファイルはうまく見えました。 しかし、再生はノイズ音だけです。 Waveファイルを再生しても効果があったので、ヘッドセットは問題ありません。 設定や出力形式に問題があると思います。 コード:Alsaaudio録音と再生
import alsaaudio as audio
import time
import audioop
#Input & Output Settings
periodsize = 1024
audioformat = audio.PCM_FORMAT_FLOAT_LE
channels = 16
framerate=8000
#Input Device
inp = audio.PCM(audio.PCM_CAPTURE,audio.PCM_NONBLOCK,device='hw:1,0')
inp.setchannels(channels)
inp.setrate(framerate)
inp.setformat(audioformat)
inp.setperiodsize(periodsize)
#Output Device
out = audio.PCM(audio.PCM_PLAYBACK,device='hw:0,0')
out.setchannels(channels)
out.setrate(framerate)
out.setformat(audioformat)
out.setperiodsize(periodsize)
#Reading the Input
allData = bytearray()
count = 0
while True:
#reading the input into one long bytearray
l,data = inp.read()
for b in data:
allData.append(b)
#Just an ending condition
count += 1
if count == 4000:
break
time.sleep(.001)
#splitting the bytearray into period sized chunks
list1 = [allData[i:i+periodsize] for i in range(0, len(allData), periodsize)]
#Writing the output
for arr in list1:
# I tested writing the arr's to a wave file at this point
# and the wave file was fine
out.write(arr)
編集:たぶん私はpythonの3
で正常に動作します。 'channel = 1'を設定すると振る舞いは変わりますか? – nucleon
ちょうど1チャンネルで試してみましたが、不幸にもそれはまだ同じです。多分、私はpython 3を使用していることを言及するべきです(質問を編集します) –
aplay/arecord --dump-hw-paramsでサポートされているデバイスパラメータを確認し、aplayを使ってコンソールから直接waveファイルを再生しようとします。 – nucleon