音声をマイクから入力しwavファイルで保存したい
pythonで音声認識のApiをためそうと思い、pyaudioで録音しようとしたところファイルは出力されるが音声が入力されていなかった。
入力装置はUSBヘッドセットのマイクを使用しようとしている。
発生している問題・エラーメッセージ
出力されたファイルに音声が入っておらず、無音になっている
また、実行結果にエラーのようなものが出力される
ALSA lib pcm.c:2266:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear ALSA lib pcm.c:2266:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe ALSA lib pcm.c:2266:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side ALSA lib pcm_route.c:867:(find_matching_chmap) Found no matching channel map recording... finished recording
該当のソースコード
python
1import pyaudio #録音機能を使うためのライブラリ 2import wave #wavファイルを扱うためのライブラリ 3 4RECORD_SECONDS = 5 #録音する時間の長さ(秒) 5WAVE_OUTPUT_FILENAME = "sample.wav" #音声を保存するファイル名 6iDeviceIndex = 2 #録音デバイスのインデックス番号 7 8#基本情報の設定 9FORMAT = pyaudio.paInt16 #音声のフォーマット 10CHANNELS = 1 #モノラル 11RATE = 44100 #サンプルレート 12CHUNK = 2**10 #データ点数 13audio = pyaudio.PyAudio() #pyaudio.PyAudio() 14 15stream = audio.open(format=FORMAT, channels=CHANNELS, 16 rate=RATE, input=True, 17 input_device_index = iDeviceIndex, #録音デバイスのインデックス番号 18 frames_per_buffer=CHUNK) 19 20#--------------録音開始--------------- 21 22print ("recording...") 23frames = [] 24for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)): 25 data = stream.read(CHUNK) 26 frames.append(data) 27 28 29print ("finished recording") 30 31#--------------録音終了--------------- 32 33stream.stop_stream() 34stream.close() 35audio.terminate() 36 37waveFile = wave.open(WAVE_OUTPUT_FILENAME, 'wb') 38waveFile.setnchannels(CHANNELS) 39waveFile.setsampwidth(audio.get_sample_size(FORMAT)) 40waveFile.setframerate(RATE) 41waveFile.writeframes(b''.join(frames)) 42waveFile.close()
デバイスの番号
cat /proc/asound/modulesの実行結果
0 snd_hda_intel 1 snd_hda_intel 2 snd_usb_audio
aplay -lの実行結果
**** ハードウェアデバイス PLAYBACK のリスト **** カード 0: PCH [HDA Intel PCH], デバイス 0: ALC892 Analog [ALC892 Analog] サブデバイス: 1/1 サブデバイス #0: subdevice #0 カード 0: PCH [HDA Intel PCH], デバイス 1: ALC892 Digital [ALC892 Digital] サブデバイス: 1/1 サブデバイス #0: subdevice #0 カード 1: NVidia [HDA NVidia], デバイス 3: HDMI 0 [HDMI 0] サブデバイス: 1/1 サブデバイス #0: subdevice #0 カード 1: NVidia [HDA NVidia], デバイス 7: HDMI 1 [HDMI 1] サブデバイス: 1/1 サブデバイス #0: subdevice #0 カード 1: NVidia [HDA NVidia], デバイス 8: HDMI 2 [HDMI 2] サブデバイス: 1/1 サブデバイス #0: subdevice #0 カード 1: NVidia [HDA NVidia], デバイス 9: HDMI 3 [HDMI 3] サブデバイス: 1/1 サブデバイス #0: subdevice #0 カード 2: Headset [Logitech G633 Gaming Headset], デバイス 0: USB Audio [USB Audio] サブデバイス: 1/1 サブデバイス #0: subdevice #0
試したこと
・マイクがミュートになっていないことはalsamixerから調整して確認済み
・マイクを0番のマイクにすると音声が入るがノイズのみになる
###開発環境
os:ubuntu 16.04.5 LTS
python :Python 3.6.3 :: Anaconda custom (64-bit)
使用しているヘッドセット:logicool g633

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。