使用OpenAI Whisper实现语音转文本时遇FileNotFoundError报错求助
解决OpenAI Whisper调用时的FileNotFoundError(WinError 2)
问题描述
我正在开发一个用OpenAI Whisper实现语音转文字的功能,代码如下:
import whisper import sounddevice as sd from scipy.io.wavfile import write import wavio as wv import os # Sampling frequency freq = 44100 # Recording duration duration = 5 # Start recorder with the given values # of duration and sample frequency print("Début de l'enregistrement") recording = sd.rec(int(duration * freq), samplerate=freq, channels=2) # Record audio for the given number of seconds sd.wait() print("Fin de l'enregistrement") # This will convert the NumPy array to an audio # file with the given sampling frequency write("audio/recording.wav", freq, recording) model = whisper.load_model("base") result = model.transcribe("audio\\recording.wav", fp16=False) print(result["text"])
运行时出现以下错误:
Traceback (most recent call last): File "c:\Users\bertr\Documents\Eliott\Code\Ooshot\Projet Whisper\main.py", line 28, in <module> result = model.transcribe("audio\\recording.wav", fp16=False) File "C:\Users\bertr\AppData\Local\Programs\Python\Python310\lib\site-packages\whisper\transcribe.py", line 84, in transcribe mel = log_mel_spectrogram(audio) File "C:\Users\bertr\AppData\Local\Programs\Python\Python310\lib\site-packages\whisper\audio.py", line 111, in log_mel_spectrogram audio = load_audio(audio) File "C:\Users\bertr\AppData\Local\Programs\Python\Python310\lib\site-packages\whisper\audio.py", line 42, in load_audio ffmpeg.input(file, threads=0) File "C:\Users\bertr\AppData\Local\Programs\Python\Python310\lib\site-packages\ffmpeg\_run.py", line 313, in run process = run_async( File "C:\Users\bertr\AppData\Local\Programs\Python\Python310\lib\site-packages\ffmpeg\_run.py", line 284, in run_async return subprocess.Popen( File "C:\Users\bertr\AppData\Local\Programs\Python\Python310\lib\subprocess.py", line 969, in __init__ self._execute_child(args, executable, preexec_fn, close_fds, File "C:\Users\bertr\AppData\Local\Programs\Python\Python310\lib\subprocess.py", line 1438, in _execute_child hp, ht, pid, tid = _winapi.CreateProcess(executable, args, FileNotFoundError: [WinError 2] The system cannot find the file specified
尝试过部分方案但未解决,需要帮助。
解决方案
错误根源
该错误是因为OpenAI Whisper依赖FFmpeg处理音频文件,而你的Windows系统未安装FFmpeg,或者FFmpeg的路径未加入系统环境变量,导致Python调用时找不到ffmpeg可执行文件。
步骤1:安装并配置FFmpeg
- 下载FFmpeg的Windows完整构建包,解压到本地任意目录(比如
C:\ffmpeg)。 - 添加环境变量:找到解压后的
bin目录(比如C:\ffmpeg\bin),将该路径添加到系统的Path环境变量中。- 右键「此电脑」→「属性」→「高级系统设置」→「环境变量」
- 在系统变量中找到「Path」,点击「编辑」→「新建」,粘贴上述
bin目录路径,保存所有设置。
步骤2:验证FFmpeg配置
打开新的命令提示符(cmd),输入以下命令:
ffmpeg -version
若能正常显示FFmpeg的版本信息,说明配置成功。
步骤3:代码优化(可选)
为避免路径兼容问题和文件夹不存在的错误,可对代码做两处修改:
- 确保
audio文件夹存在,在写入音频文件前添加:os.makedirs("audio", exist_ok=True) - 使用
os.path.join统一路径格式,替换硬编码的路径分隔符:audio_path = os.path.join("audio", "recording.wav") write(audio_path, freq, recording) result = model.transcribe(audio_path, fp16=False)
修改后的完整代码:
import whisper import sounddevice as sd from scipy.io.wavfile import write import os # Sampling frequency freq = 44100 # Recording duration duration = 5 # Ensure audio directory exists os.makedirs("audio", exist_ok=True) # Start recorder print("Début de l'enregistrement") recording = sd.rec(int(duration * freq), samplerate=freq, channels=2) sd.wait() print("Fin de l'enregistrement") # Save recording audio_path = os.path.join("audio", "recording.wav") write(audio_path, freq, recording) # Transcribe with Whisper model = whisper.load_model("base") result = model.transcribe(audio_path, fp16=False) print(result["text"])
内容的提问来源于stack exchange,提问作者OTT
相关产品推荐
相关产品推荐

