gpt4 book ai didi

python - 列出设备时 PyAudio 'utf8' 错误

转载 作者:太空狗 更新时间:2023-10-29 22:30:36 24 4
gpt4 key购买 nike

当使用支持 ASIO+DirectSound 的 PyAudio(Portaudio 绑定(bind))时,此代码:

import pyaudio

p = pyaudio.PyAudio()
for i in range(p.get_device_count()):
print p.get_device_info_by_index(i)

...产生此错误:

UnicodeDecodeError: 'utf8' codec can't decode byte 0xe9 in position 1: invalid continuation byte

我们如何解决这个问题?


问题可能来自“pyaudio.py”,第 990 行,因为 utf8 解码失败:

           return {'index' : index,
'structVersion' : device_info.structVersion,
'name' : device_info.name,

这个答案在这里Special characters in audio devices name : Pyaudio (“不要使用 PyAudio”)并不令人满意。


回溯

...
{'defaultSampleRate': 44100.0, 'defaultLowOutputLatency': 0.0, 'defaultLowInputLatency': 0.12, 'maxInputChannels': 2L, 'structVersion': 2L, 'hostApi': 1L, 'index': 8, 'defaultHighOutputLatency': 0.0, 'maxOutputChannels': 0L, 'name': u'Microphone interne (Conexant 20672 SmartAudio HD)', 'defaultHighInputLatency': 0.24}
Traceback (most recent call last):
File "D:\test\test.py", line 5, in <module>
print p.get_device_info_by_index(i)
File "C:\ProgramData\Anaconda\lib\site-packages\pyaudio.py", line 977, in get_device_info_by_index
pa.get_device_info(device_index)
File "C:\ProgramData\Anaconda\lib\site-packages\pyaudio.py", line 990, in _make_device_info_dictionary
'name' : device_info.name,
UnicodeDecodeError: 'utf8' codec can't decode byte 0xe9 in position 1: invalid continuation byte

最佳答案

“无效连续字节”错误让我认为该特定索引的文本已损坏。

如果您能够修改 pyaudio.py 文件(或让 pyaudio.py 文件仅返回名称),您也许能够尝试使用“Unicode Dammit”自行处理 UTF-8 解码。几乎需要最好地猜测编码是什么。这是他们教程的链接 ( http://www.crummy.com/software/BeautifulSoup/bs4/doc/#unicode-dammit )

我认为代码看起来就像教程一样:

from bs4 import UnicodeDammit

dammit = UnicodeDammit(audiodevicename)
print(dammit.unicode_markup) ## Wéird Device Name!

关于python - 列出设备时 PyAudio 'utf8' 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21578210/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com