質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

Q&A

解決済

2回答

2866閲覧

pythonにてマイクは認識されているが録音されない

vega

総合スコア28

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

0グッド

0クリップ

投稿2018/11/12 05:28

編集2018/11/12 07:31

音声をマイクから入力し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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

おそらくlogicoolのヘッドセットがubuntuに対応していないのが原因と推測されました。
3.5mmプラグのマイクに変更したところ無事音声の入力ができたのでそれで解決とします。

投稿2018/11/14 00:11

vega

総合スコア28

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

もしかしたらUbuntuのALSAの設定をいじったら行けるのかなあと思いました。

raspberryPi と pyaudioで録音、音声波形処理 |

/etc/modprobe.d/alsa-base.conf ファイルを、以下のような雰囲気で編集してみてください。

diff

1- options snd-usb-audio index=-2 2+ options snd-usb-audio index=0

ストレートな回答ではなくて申し訳ないです。

投稿2018/11/13 08:46

manzyun

総合スコア2244

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

vega

2018/11/14 00:16

回答ありがとうございました。 試してみたのですが、音声の入力は認識されませんでした。 おそらくですが、入力に使用したヘッドセットがubuntuに対応していなかったのが原因だと思います。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問