You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

  1. 下载FFmpeg的Windows完整构建包,解压到本地任意目录(比如C:\ffmpeg)。
  2. 添加环境变量:找到解压后的bin目录(比如C:\ffmpeg\bin),将该路径添加到系统的Path环境变量中。
    • 右键「此电脑」→「属性」→「高级系统设置」→「环境变量」
    • 在系统变量中找到「Path」,点击「编辑」→「新建」,粘贴上述bin目录路径,保存所有设置。

步骤2:验证FFmpeg配置

打开新的命令提示符(cmd),输入以下命令:

ffmpeg -version

若能正常显示FFmpeg的版本信息,说明配置成功。

步骤3:代码优化(可选)

为避免路径兼容问题和文件夹不存在的错误,可对代码做两处修改:

  1. 确保audio文件夹存在,在写入音频文件前添加:
    os.makedirs("audio", exist_ok=True)
    
  2. 使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 13:12:02