gpt4 book ai didi

python - 音频设备名称中的特殊字符 : Pyaudio

转载 作者:太空宇宙 更新时间:2023-11-04 06:43:07 25 4
gpt4 key购买 nike

我目前面临一个难题。我需要在法语 Windows 环境中使用 Pyaudio,并且音频设备的名称默认包含 éè

这是出现特殊字符时出现的错误:

   u=self.p.get_device_info_by_index(e)
File "C:\Python27\lib\site-packages\pyaudio.py", line 977, in get_device_info_
by_index
pa.get_device_info(device_index)
File "C:\Python27\lib\site-packages\pyaudio.py", line 987, in _make_device_inf
o_dictionary
print device_info.name
UnicodeDecodeError: 'utf8' codec can't decode byte 0xe9 in position 13: invalid
continuation byte

如果我可以访问代码,这将不是问题(我想我需要在字符串链前面添加一个 u"...")。

问题是我查看了 Pyaudio 代码,导致错误的方法在 pyd 文件 (_portaudio.pyd) 中定义,因此,我无法修改它!

我尝试下载 _portaudio 自己编译它,但我发现的发行版是用 C 编码的,而且相当重(我对 C 的第一件事一无所知)。也许我可以在那里做点什么,但我不知道确切的位置和方式。

我也可以通过注释获取音频设备名称的行来解决这个问题,但是如果不向用户显示其名称,则很难识别特定的音频输入。

编辑:

整体流程如下:我从 pyaudio 调用该函数:

      import pyaudio

self.p= pyaudio.PyAudio()

i=self.p.get_device_count()

for e in range(i):
u=self.p.get_device_info_by_index(e)

这将引导我进入调用该方法的 pyaudio 模块:

device_info.name

device_info 是在 _portaudio.pyd 中定义的对象。由于特定音频设备的名称包含“é”或“è”(感谢 windows),并且 _portaudio.pyd 未进行编码以处理这些字符。它返回错误:

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

最佳答案

我面临着完全相同的问题。在我的例子中,音频设备名称中有中文字符,当我 print device_info.name

时出现 UnicodeDecodeError

这是我的解决方案。

使用pymedia而不是pyaudio。试试这个:

>>> import pymedia 
>>> dict_list = pymedia.audio.sound.getIDevices()
>>> print dict_list
({'name': '\xc2\xf3\xbf\xcb\xb7\xe7 (Realtek High Definition', 'channels': 2, 'manufId': '1', 'formats': 1048575, 'id': 0, 'productId': '65'},)
>>> dict_list = pymedia.audio.sound.getODevices()
>>> print dict_list
({'name': '\xd1\xef\xc9\xf9\xc6\xf7 (MV USB AUDIO)', 'channels': 2, 'manufId': 'ffff', 'formats': 1048575, 'id': 0, 'productId': 'ffff'}, {'name': '\xd1\xef\xc9\xf9\xc6\xf7 (Realtek High Definition', 'channels': 2, 'manufId': '1', 'formats': 1048575, 'id': 1, 'productId': '64'})

我正在使用 python 2.7。

关于python - 音频设备名称中的特殊字符 : Pyaudio,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15878370/

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