ゆるプロ!番外編「PyAudioで設定したいデバイス情報のINDEXを知る」
ゆるいプログラミング講座、略して「ゆるプロ!」
これは気軽に気楽に試せるゆるーいプログラミング学習コンテンツである。今回のお題は「PyAudioで取得したデバイス情報の文字化けを修正する」
一言)
「PyAudioのデフォルトのデバイス番号を知る」記事において、デフォルトで使用されているデバイスは分かったが、使用したいデバイスのインデックスを知りたいので調べた。
例)PyAudioで設定したいデバイス情報のINDEXを知る
import pyaudio
audio = pyaudio.PyAudio()
for i in range(audio.get_device_count()):
print(audio.get_device_info_by_index(i))
結果)
結果は中略しているが、自分が使用したいデバイスのインデックスは2番であることが分かった。実際に問題は解消できた。
{'index': 1, 'structVersion': 2, 'name': '繝槭う繧ッ (Webcam internal mic)', 'hostApi': 0, 'maxInputChannels': 1, 'maxOutputChannels': 0, 'defaultLowInputLatency': 0.09, 'defaultLowOutputLatency': 0.09, 'defaultHighInputLatency': 0.18, 'defaultHighOutputLatency': 0.18, 'defaultSampleRate': 44100.0}
{'index': 2, 'structVersion': 2, 'name': 'Microphone (High Definition Aud', 'hostApi': 0, 'maxInputChannels': 2, 'maxOutputChannels': 0, 'defaultLowInputLatency': 0.09, 'defaultLowOutputLatency': 0.09, 'defaultHighInputLatency': 0.18, 'defaultHighOutputLatency': 0.18, 'defaultSampleRate': 44100.0}
なお、文字化けの解消であるが、データの行毎に文字コードの異なるUnicodeとShift_JISが混在している可能性があるので、ひとつのコードでは同じように処理できないのではないかと考えたため、結果をそのまま表示している。恐らく明治的にエンコードを知っている前提なのだろう。
print(str(audio.get_device_info_by_index(3)).encode("shift_jis").decode("utf-8"))
#UnicodeDecodeError: 'utf-8' codec can't decode byte 0x83 in position 52: invalid start byte
参考)
PyAudio公式ホームページ
PyAudio Documentation
PIP - PyAudio 0.2.13
参考にしたブログ
おわり!