配置Whisper语音转文本遇FileNotFoundError问题求助
配置Whisper语音转文本时遇FileNotFoundError问题
问题描述
尝试用Whisper实现语音转文本功能,运行脚本后触发报错:
FileNotFoundError: [WinError 2] 系统找不到指定的文件
已尝试多种路径写法、确认音频文件存在、安装ffmpeg,但问题仍未解决。本人Python经验有限,虽知晓这是常见问题,但尚未找到可行解决方案。
测试脚本
import os import whisper file_path = os.path.normcase(r'jfk.wav') file_path2 = 'C:/Users/me/Downloads/jfk.wav' file_path3 = 'C:\\Users\\me\\Downloads\\jfk.wav' #file_pathpath4 = 'C:\Users\me\Downloads\jfk.wav' file_path5 = 'jfk.wav' print("Hello Whisper") def speech_to_text(audio_file): if os.path.isfile(audio_file): print('File exists') model = whisper.load_model("base") result = model.transcribe(audio_file, verbose=True) result['text'] else: print('File does not exist') speech_to_text(file_path5)
完整报错回溯信息
C:\Users\me\AppData\Roaming\Python\Python39\site-packages\whisper\timing.py:58: NumbaDeprecationWarning: [1mThe 'nopython' keyword argument was not supplied to the 'numba.jit' decorator. The implicit default value for this argument is currently False, but it will be changed to True in Numba 0.59.0. See https://numba.readthedocs.io/en/stable/reference/deprecation.html#deprecation-of-object-mode-fall-back-behaviour-when-using-jit for details.[0m def backtrace(trace: np.ndarray): Hello Whisper File exists C:\Users\me\AppData\Roaming\Python\Python39\site-packages\whisper\transcribe.py:114: UserWarning: FP16 is not supported on CPU; using FP32 instead warnings.warn("FP16 is not supported on CPU; using FP32 instead") Traceback (most recent call last): File "c:\Users\me\Local\Cookbook\CookbookCpp\EmbedPython\python\Whisper.py", line 21, in <module> speech_to_text(file_path5) File "c:\Users\me\Local\Cookbook\CookbookCpp\EmbedPython\python\Whisper.py", line 16, in speech_to_text result = model.transcribe(audio_file, verbose=True) File "C:\Users\me\AppData\Roaming\Python\Python39\site-packages\whisper\transcribe.py", line 121, in transcribe mel = log_mel_spectrogram(audio, padding=N_SAMPLES) File "C:\Users\me\AppData\Roaming\Python\Python39\site-packages\whisper\audio.py", line 130, in log_mel_spectrogram audio = load_audio(audio) File "C:\Users\me\AppData\Roaming\Python\Python39\site-packages\whisper\audio.py", line 46, in load_audio ffmpeg.input(file, threads=0) File "C:\Users\me\AppData\Roaming\Python\Python39\site-packages\ffmpeg\_run.py", line 313, in run process = run_async( File "C:\Users\me\AppData\Roaming\Python\Python39\site-packages\ffmpeg\_run.py", line 284, in run_async return subprocess.Popen( File "C:\Program Files\Python39\lib\subprocess.py", line 951, in __init__ self._execute_child(args, executable, preexec_fn, close_fds, File "C:\Program Files\Python39\lib\subprocess.py", line 1420, in _execute_child hp, ht, pid, tid = _winapi.CreateProcess(executable, args, FileNotFoundError: [WinError 2] 系统找不到指定的文件
解决方案
从报错回溯看,问题根源是Python无法找到ffmpeg可执行文件,而非音频文件路径问题(脚本已确认文件存在)。可尝试以下几种解决办法:
将ffmpeg添加到系统PATH
- 找到ffmpeg安装目录下的
bin文件夹(例如C:\ffmpeg\bin) - 右键「此电脑」→ 属性 → 高级系统设置 → 环境变量
- 在系统变量的
PATH中添加该bin路径 - 重启命令行或IDE,输入
ffmpeg -version验证是否能正常调用
- 找到ffmpeg安装目录下的
在脚本中手动指定ffmpeg路径
如果不想修改环境变量,可在代码开头指定ffmpeg的绝对路径:import ffmpeg # 替换为你的ffmpeg.exe实际路径 ffmpeg.EXECUTABLE = r"C:\ffmpeg\bin\ffmpeg.exe"将这段代码放在
import whisper之前即可。再次确认音频文件路径
虽然脚本显示文件存在,但可打印当前工作目录进一步验证:print(os.getcwd()) # 输出脚本运行的当前目录确保
jfk.wav确实在该目录下,或直接使用绝对路径(如file_path2)调用speech_to_text函数。
内容的提问来源于stack exchange,提问作者IT SSL
相关产品推荐
相关产品推荐

