ゆるプロ!番外編「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関数で読み込めたものと思われる
おわり!