运行svoice脚本触发TypeError:无法解包非可迭代AudioMetaData对象
问题:运行svoice项目make_debug.sh脚本触发TypeError
运行svoice项目的make_debug.sh脚本时反复报错,错误根源是audio.py第34行尝试解包torchaudio.info返回的非可迭代AudioMetaData对象。
使用的依赖
$ pip list Package Version antlr4-python3-runtime 4.8 audioread 3.0.1 certifi 2023.7.22 cffi 1.16.0 charset-normalizer 3.3.0 colorama 0.4.6 colorlog 6.7.0 decorator 5.1.1 filelock 3.12.4 fsspec 2023.9.2 hydra-colorlog 1.0.0 hydra-core 1.0.3 idna 3.4 Jinja2 3.1.2 joblib 1.3.2 librosa 0.7.1 llvmlite 0.41.0 MarkupSafe 2.1.3 mpmath 1.3.0 networkx 3.1 numba 0.58.0 numpy 1.25.2 omegaconf 2.1.2 pesq 0.0.2 Pillow 10.0.1 pip 23.2.1 pycparser 2.21 pystoi 0.3.3 PyYAML 6.0.1 requests 2.31.0 resampy 0.4.2 scikit-learn 1.3.1 scipy 1.11.3 setuptools 68.2.2 six 1.16.0 soundfile 0.12.1 sympy 1.12 threadpoolctl 3.2.0 torch 2.1.0 torchaudio 2.1.0 torchvision 0.16.0 tqdm 4.51.0 typing_extensions 4.8.0 urllib3 2.0.6
错误信息
$ ./make_debug.sh 0%| | 0/8 [00:00<?, ?it/s] Traceback (most recent call last): File "", line 198, in _run_module_as_main File "", line 88, in _run_code File "D:\auditivo.ai\svoice\svoice\data\audio.py", line 87, in json.dump(find_audio_files(sys.argv[1]), sys.stdout, indent=4) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\auditivo.ai\svoice\svoice\data\audio.py", line 34, in find_audio_files siginfo, _ = torchaudio.info(file) ^^^^^^^^^^ TypeError: cannot unpack non-iterable AudioMetaData object 0%| | 0/8 [00:00<?, ?it/s] Traceback (most recent call last): File "", line 198, in _run_module_as_main File "", line 88, in _run_code File "D:\auditivo.ai\svoice\svoice\data\audio.py", line 87, in json.dump(find_audio_files(sys.argv[1]), sys.stdout, indent=4) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\auditivo.ai\svoice\svoice\data\audio.py", line 34, in find_audio_files siginfo, _ = torchaudio.info(file) ^^^^^^^^^^ TypeError: cannot unpack non-iterable AudioMetaData object 0%| | 0/8 [00:00<?, ?it/s] Traceback (most recent call last): File "", line 198, in _run_module_as_main File "", line 88, in _run_code File "D:\auditivo.ai\svoice\svoice\data\audio.py", line 87, in json.dump(find_audio_files(sys.argv[1]), sys.stdout, indent=4) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\auditivo.ai\svoice\svoice\data\audio.py", line 34, in find_audio_files siginfo, _ = torchaudio.info(file) ^^^^^^^^^^ TypeError: cannot unpack non-iterable AudioMetaData object (auditivo)
解决方法
这个问题是因为torchaudio版本更新后,torchaudio.info()的返回值格式发生了变化:旧版本返回元组,新版本(如你使用的2.1.0)返回AudioMetaData对象,无法直接解包。
有两种可行的解决途径:
- 适配新版本代码:修改
svoice/data/audio.py第34行,将siginfo, _ = torchaudio.info(file)改为siginfo = torchaudio.info(file),后续代码中若需要访问音频信息,直接通过对象属性调用,比如siginfo.sample_rate、siginfo.num_channels。 - 降级torchaudio版本:安装与项目兼容的旧版torchaudio,注意要和torch版本匹配,执行命令:
pip install torchaudio==1.13.1(需确保torch版本对应,若torch也需降级可执行pip install torch==1.13.1 torchaudio==1.13.1)
内容的提问来源于stack exchange,提问作者Guneshwar Singh
相关产品推荐
相关产品推荐

