プログラミング

Whisperで音声ファイル読み込み時に「FileNotFoundError:指定されたファイルが見つかりません。」となった話

この記事は約7分で読めます。

 

先日自動化業務で、Whisperで音声ファイル読み込み時に「FileNotFoundError:指定されたファイルが見つかりません。」となり原因の特定に少し苦労したので解決法をメモしておきます

 

関連記事【Python】whisperを使って音声動画からsrt形式の字幕ファイルを生成する

 

コード

 

import whisper
model = whisper.load_model("large")
path = "sample.mp3"
result = model.transcribe(path, verbose=True, language='ja')
print(result["text"])

 

エラーメッセージ

 

FileNotFoundError                         Traceback (most recent call last)
~\AppData\Local\Temp/ipykernel_4848/290471416.py in 
      5 path = ".\\testsample.mp3"
      6 
----> 7 result = model.transcribe(path, verbose=True, language='ja')
      8 print(result["text"])

~\anaconda3\envs\pip-env\lib\site-packages\whisper\transcribe.py in transcribe(model, audio, verbose, temperature, compression_ratio_threshold, logprob_threshold, no_speech_threshold, condition_on_previous_text, **decode_options)
     82         decode_options["fp16"] = False
     83 
---> 84     mel = log_mel_spectrogram(audio)
     85 
     86     if decode_options.get("language", None) is None:

~\anaconda3\envs\pip-env\lib\site-packages\whisper\audio.py in log_mel_spectrogram(audio, n_mels)
    109     if not torch.is_tensor(audio):
    110         if isinstance(audio, str):
--> 111             audio = load_audio(audio)
    112         audio = torch.from_numpy(audio)
    113 

~\anaconda3\envs\pip-env\lib\site-packages\whisper\audio.py in load_audio(file, sr)
     42             ffmpeg.input(file, threads=0)
     43             .output("-", format="s16le", acodec="pcm_s16le", ac=1, ar=sr)
---> 44             .run(cmd=["ffmpeg", "-nostdin"], capture_stdout=True, capture_stderr=True)
     45         )
     46     except ffmpeg.Error as e:

~\anaconda3\envs\pip-env\lib\site-packages\ffmpeg\_run.py in run(stream_spec, cmd, capture_stdout, capture_stderr, input, quiet, overwrite_output)
    318         pipe_stderr=capture_stderr,
    319         quiet=quiet,
--> 320         overwrite_output=overwrite_output,
    321     )
    322     out, err = process.communicate(input)

~\anaconda3\envs\pip-env\lib\site-packages\ffmpeg\_run.py in run_async(stream_spec, cmd, pipe_stdin, pipe_stdout, pipe_stderr, quiet, overwrite_output)
    283     stderr_stream = subprocess.PIPE if pipe_stderr or quiet else None
    284     return subprocess.Popen(
--> 285         args, stdin=stdin_stream, stdout=stdout_stream, stderr=stderr_stream
    286     )
    287 

~\anaconda3\envs\pip-env\lib\subprocess.py in __init__(self, args, bufsize, executable, stdin, stdout, stderr, preexec_fn, close_fds, shell, cwd, env, universal_newlines, startupinfo, creationflags, restore_signals, start_new_session, pass_fds, encoding, errors, text)
    798                                 c2pread, c2pwrite,
    799                                 errread, errwrite,
--> 800                                 restore_signals, start_new_session)
    801         except:
    802             # Cleanup if the child failed starting.

~\anaconda3\envs\pip-env\lib\subprocess.py in _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, unused_restore_signals, unused_start_new_session)
   1205                                          env,
   1206                                          os.fspath(cwd) if cwd is not None else None,
-> 1207                                          startupinfo)
   1208             finally:
   1209                 # Child is launched. Close the parent's copy of those pipe

FileNotFoundError: [WinError 2] 指定されたファイルが見つかりません。

 

 

ファイルが見つからないということは単純に読み込むMP3のパスが間違えていたのかなと思いきやMP3のパスは何度確認しても一致しており途方に暮れていました

 

原因

 

原因はWhisperの内部で使用されている「ffmpeg」が使用されていなかったことでした。ファイルが見つからないというのは読み込む音声ファイルのパスではなく「指定された(ffmpegの)ファイルが見つかりません。」という意味のメッセージだったようです。

 

下記サイトを参照して「ffmpeg」をダウンロードし、ファイルのパスを環境変数に通してPCを再起動したところ正常に動作しました(WINDOWSにて)

 

【5分でできる】Windowsにffmpegをインストールしてパスを通す方法を解説
どのffmpegをダウンロードすればよいかや、環境変数にffmpegを追加してPATHを設定する方法を丁寧に画像付きで解説します。きちんとインストールできたか簡単に確認する方法も紹介します。 1,公式サイトからffmpegをダウンロード ど

 

 


プログラミング・スクレイピングツール作成の相談を受け付けています!

クラウドワークス・ココナラ・MENTAなどでPython・SQL・GASなどのプログラミングに関する相談やツール作成などを承っております!

過去の案件事例:

  • Twitter・インスタグラムの自動化ツール作成
  • ウェブサイトのスクレイピングサポート
  • ダッシュボード・サイト作成
  • データエンジニア転職相談

これまでの案件例を見る

キャリア相談もお気軽に!文系学部卒からエンジニア・データサイエンティストへの転職経験をもとに、未経験者がどう進むべきかのアドバイスを提供します。


スポンサーリンク
/* プログラミング速報関連記事一覧表示 */
ミナピピンの研究室

コメント

タイトルとURLをコピーしました