python3.7をMacBookで使っています。現在、音声を録音したいと思い。sounddeviceやpyaudioをインストールしました。ネットの情報を参考にしながら、録音を行っているのですが、Macbookのマイクが全く認識されません。マイクを検索できます。
% python3 -m sounddevice 0 Built-in Microphone, Core Audio (2 in, 0 out) 1 Built-in Output, Core Audio (0 in, 2 out) > 2 Logitech USB Headset, Core Audio (1 in, 0 out) < 3 Logitech USB Headset, Core Audio (0 in, 2 out)
しかし、下記のようにインデックスを入力するとエラーが出てきて認識することができません。
python
1import sounddevice as sd 2import numpy as np 3# sd.default.device = [in, out]のように、入出力で別々にアサイン 4sd.default.device = [0,1]
% python3 sounddevice.py Traceback (most recent call last): File "sounddevice.py", line 1, in <module> import sounddevice as sd File "/Users/itsuki/Documents/音の再生・録音/sounddevice.py", line 6, in <module> sd.default.device = [0,1] AttributeError: module 'sounddevice' has no attribute 'default'
そのため、pyaudioでも試して見たのですが、こちらはエラーはでませんが、値を全く拾っていないため、こちらもマイクの入力ができていないと思われます。
python
1import pyaudio 2import numpy as np 3from matplotlib import pyplot as plt 4 5 6DEVICE_INDEX = 0 7CHUNK = 1024 8FORMAT = pyaudio.paInt16 # 16bit 9CHANNELS = 1 # monaural 10RATE = 44100 # sampling frequency [Hz] 11time = 3 # 計測時間[s] 12 13def record(): 14 pa = pyaudio.PyAudio() 15 data = [] 16 dt = 1 / RATE 17 18 print("recording ...") 19 20 # ストリームの開始 21 stream = pa.open(format=FORMAT, 22 channels=CHANNELS, 23 rate=RATE, 24 input=True, 25 input_device_index = DEVICE_INDEX, 26 frames_per_buffer=CHUNK) 27 28 29 frames = [] 30 # フレームサイズ毎に音声を録音していくループ 31 for i in range(0, int(RATE / CHUNK * time)): 32 frame = stream.read(CHUNK) 33 data.append(frame) 34 35 # ストリームの終了 36 stream.stop_stream() 37 stream.close() 38 pa.terminate() 39 40 # データをまとめる処理 41 data = b"".join(data) 42 43 # データをNumpy配列に変換 44 data = np.frombuffer(data, dtype="int16") / \ 45 float((np.power(2, 16) / 2) - 1) 46 47 return data, i 48 49wfm, i = record() 50t = np.arange(0, CHUNK * (i+1) * (1 / RATE), 1 / RATE) 51 52# ここからグラフ描画 53# フォントの種類とサイズを設定する。 54plt.rcParams['font.size'] = 14 55plt.rcParams['font.family'] = 'Times New Roman' 56 57# 目盛を内側にする。 58plt.rcParams['xtick.direction'] = 'in' 59plt.rcParams['ytick.direction'] = 'in' 60 61# グラフの上下左右に目盛線を付ける。 62fig = plt.figure() 63ax1 = fig.add_subplot(111) 64ax1.yaxis.set_ticks_position('both') 65ax1.xaxis.set_ticks_position('both') 66 67# 軸のラベルを設定する。 68ax1.set_xlabel('Time [s]') 69ax1.set_ylabel('Sound pressure [Pa]') 70 71# データプロットの準備とともに、ラベルと線の太さ、凡例の設置を行う。 72ax1.plot(t, wfm, label='signal', lw=1) 73 74fig.tight_layout() 75 76# グラフを表示する。 77plt.show() 78plt.close() 79
原因が分かる方がいれば、教えていただけるようお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/10/30 00:20