解决报错:Invalid number of channels [PaErrorCode -9998]

继昨天重装了树莓派系统后,今天开始重新安装语音助手。在测试录音代码时遇到了报错“Invalid number of channels [PaErrorCode -9998]”,这是怎么回事?

有人说这是因为pyaudio没有安装成功造成的。于是,我pip3 install –upgrade pyaudio,的确升级了版本,但运行record.py时还是同样的报错。那么,报错源自哪里?

在《树莓派智能语音助手实现音乐播放》一文中,我提到过用sounddevice录音的时候需要定义具体是哪个设备。于是打开record.py文件,一看,当前使用的device = 3。

那么编号为3的device是否可以承担录音职责?在终端输入python3 -m sounddevice,可用音频设备一目了然。

如上图,重装树莓派系统后,我的usb麦克风的编号变成了2(从0算起),所以,代码要改为device=2。调整后再运行record.py,成功!

### MATLAB 中处理 UTF-8 编码错误 当遇到 `Invalid byte 2 of 2-byte UTF-8 sequence` 错误时,这通常意味着读取文件或字符串的过程中遇到了不合法的 UTF-8 字节序列。为了有效解决此问题,可以采取以下几种方法: #### 方法一:设置默认字符集 确保 MATLAB 使用正确的字符编码来解释输入数据。可以通过修改系统的环境变量或直接在脚本中指定编码方式。 ```matlab % 设置默认字符集为 UTF-8 feature('DefaultCharacterSet', 'UTF-8'); ``` 这种方法适用于大多数情况下的文本处理操作[^1]。 #### 方法二:修正源文件编码 如果问题是由于外部文件引起的,则应确认该文件确实是以 UTF-8 编码保存的。如果不是,请将其转换成 UTF-8 格式再尝试加载到 MATLAB 中。 对于已知存在乱码的情况,在导入前先通过其他工具(如 Notepad++ 或 Sublime Text)打开并重新编码文件是一个不错的选择。 #### 方法三:过滤非法字节序列 有时即使指定了正确编码,仍可能碰到含有损坏字符的数据流。此时可以在读入过程中加入异常捕获机制,跳过这些有问题的部分继续执行后续逻辑。 下面给出一段简单的代码片段用于演示如何忽略无法解析的多字节字符: ```matlab fid = fopen('example.txt','r','n','utf8'); % 打开文件,采用 utf8 解码器 while ~feof(fid) try line = fgetl(fid); disp(line); % 显示每一行内容 catch ME %#ok<CTCH> warning(['Skipped invalid character at position ', num2str(ME.message)]); end end fclose(fid); ``` 这段程序会逐行读取文件,并自动绕过任何不符合 UTF-8 规范的地方而不中断整个流程[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天飓

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值