1. 目的と特徴
目的:
マイクから入力された音声を、リアルタイムで日本語テキストに変換する。
特徴:
- インターネット不要(Voskはローカルで音声認識)
- Python単体で動作(ブラウザやクラウド不要)
- 速度が速い・精度は中程度(Whisperより軽量)
2. 環境準備
Python要件:3.8以上
ライブラリ:vosk と sounddevice
pip install vosk sounddevice
音声入出力には sounddevice を使用。
認識エンジンは Vosk(Kaldiベース)。
3. 日本語モデルの入手
- Vosk公式モデルサイト にアクセス
-
vosk-model-small-ja-0.22をダウンロード(日本語軽量モデル) - 解凍してできたフォルダを
model/にリネーム - このフォルダをスクリプトと同じディレクトリに置く
→ ローカルで日本語音声を解析できるようになる。
4. コード解説
(1) モデル・設定
model = Model("model")
rec = KaldiRecognizer(model, 16000)
-
16000 Hzは標準的な音声認識サンプリングレート。 - KaldiRecognizerが波形を解析してテキストを生成する。
(2) 音声入力処理
with sd.RawInputStream(..., callback=callback):
-
sounddeviceによるリアルタイム録音。 - 各ブロックごとに
callback()が呼ばれる。
(3) コールバック関数
if rec.AcceptWaveform(indata.tobytes()):
print(json.loads(rec.Result())["text"])
else:
print(json.loads(rec.PartialResult())["partial"], end="\r")
- 音声が一定長たまると
AcceptWaveform()がTrueになり確定文を出力。 - 途中経過(partial)はリアルタイムに更新。
5. 実行方法
python realtime_transcribe_vosk.py
起動すると、
Start transcription (Ctrl+C to stop)
が表示され、マイク音声がそのままテキストとして端末上に表示される。
6. 応用・拡張
| 機能 | 方法 |
|---|---|
| テキストログ保存 |
open("log.txt", "a") で書き込み |
| タイムスタンプ付き |
datetime.now() を行ごとに追加 |
| GUI化 |
tkinter または PyQt5
|
| 高精度化 | Whisperモデルに置き換え(GPU使用可能) |
7. まとめ
Voskは軽量でオフライン音声認識に最適。
本スクリプトはPythonだけで動作し、ネット接続が不要なリアルタイム文字起こしを可能にする。