kotoba-whisper-v2.0を利用して、音声ファイルから文字起こしをする方法を紹介します。
kotoba-whisper-v2.0とは
Kotoba-Whisperは、OpenAIが開発した音声認識モデル「Whisper」を日本語に特化させ、高速化・高精度化を実現した音声認識モデルです。特に最新バージョンの「kotoba-whisper-v2.0」は、Whisper large-v3モデルを基に、蒸留技術を用いて最適化されており、同等の認識精度を維持しつつ、推論速度を約6.3倍に向上させています。
主な特徴:
- 高精度な音声認識: 日本語に特化してトレーニングされており、専門用語や日常会話のニュアンスを正確に捉えることができます。
- 高速な処理能力: 従来のモデルと比較して、推論速度が大幅に向上しており、長時間の音声データでも迅速に処理が可能です。
- ローカル環境での動作: データをクラウドにアップロードせずに処理できるため、機密情報を扱う企業や組織にとって安心して利用できます。
準備
言語はPythonです。下記をpip install
してください。
accelerate==1.3.0 aiohappyeyeballs==2.4.6 aiohttp==3.11.12 aiosignal==1.3.2 attrs==25.1.0 audioread==3.0.1 certifi==2025.1.31 cffi==1.17.1 charset-normalizer==3.4.1 datasets==3.2.0 decorator==5.1.1 dill==0.3.8 filelock==3.17.0 frozenlist==1.5.0 fsspec==2024.9.0 huggingface-hub==0.28.1 idna==3.10 Jinja2==3.1.5 joblib==1.4.2 lazy_loader==0.4 librosa==0.10.2.post1 llvmlite==0.44.0 MarkupSafe==3.0.2 mpmath==1.3.0 msgpack==1.1.0 multidict==6.1.0 multiprocess==0.70.16 networkx==3.4.2 numba==0.61.0 numpy==2.1.3 packaging==24.2 pandas==2.2.3 platformdirs==4.3.6 pooch==1.8.2 propcache==0.2.1 psutil==6.1.1 pyarrow==19.0.0 pycparser==2.22 python-dateutil==2.9.0.post0 pytz==2025.1 PyYAML==6.0.2 regex==2024.11.6 requests==2.32.3 safetensors==0.5.2 scikit-learn==1.6.1 scipy==1.15.1 setuptools==75.8.0 six==1.17.0 soundfile==0.13.1 soxr==0.5.0.post1 sympy==1.13.1 threadpoolctl==3.5.0 tokenizers==0.21.0 torch==2.6.0 tqdm==4.67.1 transformers==4.48.3 typing_extensions==4.12.2 tzdata==2025.1 urllib3==2.3.0 xxhash==3.5.0 yarl==1.18.3
プログラム
import torch from transformers import pipeline from datasets import load_dataset import numpy as np # config model_id = "kotoba-tech/kotoba-whisper-v2.0" torch_dtype = torch.bfloat16 if torch.cuda.is_available() else torch.float32 device = "cuda:0" if torch.cuda.is_available() else "cpu" model_kwargs = {"attn_implementation": "sdpa"} if torch.cuda.is_available() else {} generate_kwargs = {"language": "ja", "task": "transcribe"} # load model pipe = pipeline( "automatic-speech-recognition", model=model_id, torch_dtype=torch_dtype, device=device, model_kwargs=model_kwargs, batch_size=16 ) # load sample audio (concatenate instances to create a long audio) dataset = load_dataset("japanese-asr/ja_asr.reazonspeech_test", split="test") sample = {"array": np.concatenate([i["array"] for i in dataset[:20]["audio"]]), "sampling_rate": dataset[0]['audio']['sampling_rate']} # run inference #result = pipe(sample, chunk_length_s=15, generate_kwargs=generate_kwargs) # run localfile result = pipe("test2.mp3", return_timestamps=True, generate_kwargs=generate_kwargs) print(result["text"])
注意点
文字起こしはしてくれるが、漢字が正しくなかったり、一部ニュアンスが異なっている箇所があるので、目視確認は必要かと思います。 ただ、総評には高精度な方だと思う。
ちなみに下記は、獺祭というお酒を解説した音声ファイルを文字起こししたものです。 ※プログラムの出力結果をそのまま貼り付けています。
脱菜という言葉には素晴らしい意味が込められています日本の伝統的な酒である脱菜は聖地で繊細な味わいが特徴ですどんな食事にも合うその香り高いお酒はまさに日本の美を象徴しているといえるでしょうまた、川宇祖祭はその製造過程においても厳選された米を使用し技術の水を尽くして作られていますそんなこだわり抜かれた一品を一度味わえばその豊かな風味に魅了され毎晩でも飲みたくなってしまうことでしょう自然とともに生きるという姿勢を感じさせるかのようです