Whisperによる音声文字起こし

2026年8月9日

はじめに

Whisperを用いて音声文字起こしを行う。

環境

  • Ubuntu 22.04 LTS
  • Intel Core i9-14900K、メモリ 32GB
  • NVIDIA GeForce RTX 4090 (24GB)
  • Pi (pi-sandbox) + LM Studio (Qwen3.6 35B A3B)

参考実装

ここ を参考にする。sounddeviceとfaster-whisperを使用。

import sounddevice as sd
from faster_whisper import WhisperModel

# Initialize models
whisper = WhisperModel("turbo", device="cuda", compute_type="float16")

def record_audio(duration=5, sample_rate=16000):
    """Record from microphone."""
    print("Listening...")
    audio = sd.rec(int(duration * sample_rate),
                   samplerate=sample_rate, channels=1, dtype="float32")
    sd.wait()
    return audio.flatten()

def transcribe(audio):
    """Speech to text with faster-whisper."""
    segments, _ = whisper.transcribe(audio, beam_size=5)
    return " ".join(s.text for s in segments).strip()

# Main loop
while True:
    audio = record_audio()
    text = transcribe(audio)
    if not text:
        continue
    print(text)

実行すると、最初だけモデルのダウンロードのため時間がかかる。最初の動作確認は"turbo"の代わりに"tiny"のほうがよい。

$ uv venv
$ uv pip install sounddevice faster_whisper torch
$ sudo apt install portaudio19-dev
$ uv run transcribe.py
Listening...
こんにちは
Listening...
今日はいい天気ですね

計画

音声文字起こしコマンドnotetaker.pyを作る。要求定義書PRD.mdを作成。Piと相談しながら詳細を詰めた。

セットアップ

$ uv init notetaker
$ cd notetaker
$ uv add sounddevice faster-whisper numpy torch

開発

Piにおまかせ。ただし、テストは手動でやる。

動作確認

$ mkdir test
$ cd test
$ uv run ../notetaker.py

厚生労働省の動画 【職場における熱中症予防】5.水分塩分同時補給 の音声を文字起こししてみた(スピーカー音声をマイクで聞き取る)。

Output file: note_202608091907.md
Listening... (Ctrl-C to stop)
APIによる自動音声でお伝えします 職場における熱中症予防対策
塩分と塩分は同時に補給。労働者の約半数が、修行前から水分が不足している。
水分は必ず補給しなければなりません 脱水症になっている
...

note_202608091907.md

# 文字起こし記録
作成日時: 2026-08-09 19:07:50
検出言語: ja

---

APIによる自動音声でお伝えします 職場における熱中症予防対策
塩分と塩分は同時に補給。労働者の約半数が、修行前から水分が不足している。
水分は必ず補給しなければなりません 脱水症になっている
...

できたファイルに基本情報をメモして、それをもとに議事録を作る。Piへのプロンプト:

`test/note_202608091907.md`は動画音声の文字起こしです。以下に従って作業してください。
- メモがあればそれを参考にしてください。
- 文字起こしから文脈的に関係ないものを取り除いてください。
- 意味的におかしなところは修正してください。
- 議事録としてポイントを整理してください。
- 整理したものは`test/summary_202608091907.md`として書き出してください。

Pi

 test/summary_202608091907.md を作成しました。
 
 主な作業:
 - 文字起こしのおかしな部分(「塩分と塩分」「蛍光保水液」「水晶を起こしている」等)を修正
 - 閉会の挨拶(「ご視聴ありがとうございました」等)を削除
 - 7つのトピックに整理して表形式で提示
 - 自宅ドリンクのレシピも記載

summary_202608091907.md

# 議事録: 職場における熱中症予防対策

**出典**: 厚生労働省動画「【職場における熱中症予防】5. 水分・塩分同時補給」
**日時**: 2026-08-09 19:07
**ファイル**: [元の文字起こし](note_202608091907.md)

---

## ポイント

### 1. 脱水チェック方法

- **皮膚ピンチテスト**: 手の甲の皮膚をつまんで離し、元に戻るのに2秒以上かかる場合は脱水の疑い
- **爪の血流テスト**: 親指をつまんで離し、爪の色が白からピンクに戻るのに3秒以上かかる場合は脱水の可能性
- **尿の色**: 尿の色でも脱水状態を確認できる
- 軽い脱水状態では喉の渇きを感じないこともある
...

動画の再生速度は、1.5倍が限界だった。2倍にした場合、録音時間を短くするなどすればある程度対応できるが、「ご視聴ありがとうございました」などの唐突な文言が増える。この文言は文字起こしをする製品(TeamsだったかNotionだったか)で見たことがあるが、Whisperのええかげん出力だったんだなーって、思った。

成果物

参考文献