長文で恐縮ですが、よろしくお願い致します。
実現したい事
openAIのwhisperを使用して音声ファイルを文字起こしする機能をpythonで実装したいのですが、
AttributeError: module 'ffmpeg' has no attribute 'input'というエラーが発生します。
発生している問題・エラーメッセージ
AttributeError: module 'ffmpeg' has no attribute 'input'
下記に示すソースコードの最終行:
result = model.transcribe(path, verbose=True, language='ja')の部分でエラーとなります
----------エラーの全文は下記の通りです---------
AttributeError Traceback (most recent call last)
File ~\anaconda3\envs\venv\lib\site-packages\whisper\audio.py:42, in load_audio(file, sr)
38 try:
39 # This launches a subprocess to decode audio while down-mixing and resampling as necessary.
40 # Requires the ffmpeg CLI and ffmpeg-python
package to be installed.
41 out, _ = (
---> 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:
AttributeError: module 'ffmpeg' has no attribute 'input'
During handling of the above exception, another exception occurred:
AttributeError Traceback (most recent call last)
Input In [31], in ()
----> 1 result = model.transcribe(path, verbose=True, language='ja')
2 print(['result'].text)
File ~\anaconda3\envs\venv\lib\site-packages\whisper\transcribe.py:84, in transcribe(model, audio, verbose, temperature, compression_ratio_threshold, logprob_threshold, no_speech_threshold, condition_on_previous_text, **decode_options)
81 if dtype == torch.float32:
82 decode_options["fp16"] = False
---> 84 mel = log_mel_spectrogram(audio)
86 if decode_options.get("language", None) is None:
87 if not model.is_multilingual:
File ~\anaconda3\envs\venv\lib\site-packages\whisper\audio.py:111, 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)
114 window = torch.hann_window(N_FFT).to(audio.device)
File ~\anaconda3\envs\venv\lib\site-packages\whisper\audio.py:46, in load_audio(file, sr)
38 try:
39 # This launches a subprocess to decode audio while down-mixing and resampling as necessary.
40 # Requires the ffmpeg CLI and ffmpeg-python
package to be installed.
41 out, _ = (
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:
47 raise RuntimeError(f"Failed to load audio: {e.stderr.decode()}") from e
49 return np.frombuffer(out, np.int16).flatten().astype(np.float32) / 32768.0
AttributeError: module 'ffmpeg' has no attribute 'Error'
----------エラーの全文ここまで---------
該当のソースコードは下記の通りです
import whisper
import ffmpeg
model = whisper.load_model("small")
path = "7008004_DiscA_01.mp3"
result = model.transcribe(path, verbose=True, language='ja')
ソースコードはここまで
試したこと、調べたこと
https://github.com/kkroening/ffmpeg-python/issues/174
上記のサイトに書かれているffmpegについてffmpeg, ffmpeg-python, python-ffmpegなどのパッケージを
pip installでinstallしてそれぞれのパッケージで試してみましたがうまくいきませんでした。
オーディオファイルのpathを変えたり、場所をデスクトップからpythonの実行ファイルと同じディレクトリに移してもダメでした。
- 補足情報
Jupyter NotebookとVisual Studion Codeの両方で同様のエラー
- 開発環境
Windows10
conda version : 22.9.0
python version : 3.9.12
ffmpeg-python 0.2.0
whisper 1.0
IDE:Jupyter Notebook
非エンジニアのPython1年生ですが、どうかご教授お願い致します。### 前提
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/11/03 14:49
2022/11/04 05:39 編集
2022/11/03 15:22
2022/11/05 01:13
2022/11/05 03:52
2022/11/05 08:01
2022/11/05 12:23 編集
2022/11/05 12:21
2022/11/05 15:45
2022/11/06 00:05 編集
2022/11/06 12:04
2022/11/06 12:45
2022/11/06 13:11 編集
2022/11/06 14:15
2022/11/07 02:14