見出し画像

ゆるプロ!番外編「PyAudioで取得したデバイス情報の文字化けを修正する」

ゆるいプログラミング講座、略して「ゆるプロ!」
これは気軽に気楽に試せるゆるーいプログラミング学習コンテンツである。今回のお題は「PyAudioで取得したデバイス情報の文字化けを修正する」


一言)

「PyAudioのデフォルトのデバイス番号を知る」記事において文字化けているところを何とかして読み取りたい。データ元の文字コードがShift_JISなのではないか、PythonはUTF-8なので文字化けを直してみる。

例)PyAudioで取得したデバイス情報の文字化けを修正する

import pyaudio
audio = pyaudio.PyAudio()
print(str(audio.get_default_input_device_info()).encode("shift_jis").decode("utf-8"))

補足説明

get_default_input_device_infoの結果はdictionaryであることが分かった。dictionaryのままではencodeできないことが分かったため、strで変換した。
なお、json.dumpも試したが勝手にエンコードされたので不採用とした。もしかしたら出来るのかもしれないが、json形式に変換したいのではなく、文字コードを変換したいのではなく、文字列化だけしたいのだ

#Image
type(get_default_input_device_info()) # Dict
str(audio.get_default_input_device_info() #文字列化

結果)

マイクと書いてあることが分かった

{'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}

参考)

バイト列への変換

str.encode

bytes.decode

参考にしたブログ

文字化けしたデータの文字コードを当たるために使った

encodeとdecodeについて思い出すために読んだ

dictionary→str変換にjson dump

strでも変換できる

json.dumpについて

strであれば、特に勝手にエンコードはしなさそうだ

オブジェクト、class、ディクショナリ、自分の概念の認識が怪しかった。恐らく、object ∋ dictなのでstr関数で読み込めたものと思われる

おわり!