Mac系统使用pydub处理音频时报ffprobe找不到错误如何解决?
报错原因
pydub调用ffmpeg、ffprobe依赖系统PATH环境变量能找到对应可执行文件,触发该报错的常见原因有2个:
- 你通过pip安装的ffmpeg是Python封装包,未提供全局可调用的ffmpeg、ffprobe二进制文件,和homebrew安装的二进制产生冲突
- homebrew的安装路径未被纳入Python运行时的PATH环境变量,Mac不同架构设备的homebrew默认路径不同:Apple Silicon系列为
/opt/homebrew/bin,Intel系列为/usr/local/bin,IDE默认的环境变量未读取该路径就会找不到对应程序
解决方案
按以下步骤排查修复即可:
- 先清理冲突的pip包,终端执行命令:
pip uninstall -y ffmpeg - 确认homebrew安装的ffmpeg、ffprobe有效路径,终端分别执行命令:
which ffmpegwhich ffprobe
执行后会输出对应文件的完整路径,例如/opt/homebrew/bin/ffmpeg、/opt/homebrew/bin/ffprobe - 方案一(最快生效,无需改系统配置):在你的代码导入pydub之前,手动指定两个文件的路径,修改后的代码如下:
import speech_recognition import pydub # 替换为你自己通过which命令拿到的对应路径 pydub.AudioSegment.converter = "/opt/homebrew/bin/ffmpeg" pydub.AudioSegment.ffprobe = "/opt/homebrew/bin/ffprobe" from pydub import AudioSegment from os import path #get text from original voice file------------------------------------------------- sound = AudioSegment.from_mp3("/path/to/file.mp3") sound.export("/output/path/file.wav", format="wav") file_audio = speech_recognition.AudioFile('/output/path/file.wav') r = speech_recognition.Recognizer() with file_audio as source: audio_text = r.record(source) word = r.recognize_google(audio_text)
- 方案二(全局生效):将homebrew的二进制路径加入系统环境变量
如果你使用默认zsh终端,编辑~/.zshrc文件,加入对应配置:
- Apple Silicon设备加:
export PATH="/opt/homebrew/bin:$PATH" - Intel设备加:
export PATH="/usr/local/bin:$PATH"
保存后终端执行source ~/.zshrc,重启你的IDE后配置生效,即可正常运行代码。
内容的提问来源于stack exchange,提问作者gasper101
相关产品推荐
相关产品推荐

