0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Google Colab / 音声データ_音量小さくてNotebookLMで文字起こしできない時

Posted at

音量が小さい音声でも文字起こしできる!Google ColabでWhisperを使った解決方法

blog_top_image.png

背景:NotebookLMでの文字起こしが失敗

音声ファイルをNotebookLMに突っ込んでみたものの、「音声が小さくて文字起こしできない」というエラーが...。

せっかく録音した音声なのに、これでは困りますよね。そこで、Google ColabとOpenAIのWhisperモデルを使って、自分で文字起こしを実装してみました!

解決策:Google Colab + Whisper + 音量正規化

必要なライブラリのインストール

# 必要なライブラリをインストール
!pip install whisper-openai
!pip install pydub

# 必要なモジュールをインポート
import os
import time
from google.colab import files
from pydub import AudioSegment
import textwrap
import whisper

Whisperモデルの読み込み

# Whisperモデルの読み込み(日本語に最適化するため、mediumモデルを使用。必要に応じてlargeに変更可能)
# モデルサイズ: large > medium > small(精度↑、処理時間↓)
print("Whisperモデルを読み込んでいます。しばらくお待ちください...")
model = whisper.load_model("medium")

音声ファイルのアップロード

# 音声ファイルのアップロード
print("日本語の音声ファイルをアップロードしてください。")
uploaded = files.upload()

文字起こし処理(ポイント:音量正規化)

# 文字起こしの実行
for filename in uploaded.keys():
    print(f"{filename}を処理中...")
    
    # 音声ファイルの形式を確認し、必要に応じて変換
    audio = AudioSegment.from_file(filename)
    
    # 【対応1: 小さな音声を調整】音量を正規化して、音声レベルを均一化
    # 音量が小さすぎる場合、この正規化によって認識精度が向上します
    print(">> 音量を正規化しています...")
    audio = audio.normalize()
    
    wav_filename = filename.rsplit(".", 1)[0] + ".wav"
    audio.export(wav_filename, format="wav")
    
    # 文字起こしの実行(処理時間の計測を追加)
    start_time = time.time()
    # 【対応2: 日本語特化】言語を日本語に明示的に指定("ja"が推奨)
    print(">> 文字起こしを開始します...")
    result = model.transcribe(wav_filename, language="ja")
    end_time = time.time()
    
    # 処理時間の表示
    print(f"文字起こし処理時間: {end_time - start_time:.2f}")
    
    # 文字起こし結果の整形(日本語向けに調整)
    formatted_text = ""
    for segment in result["segments"]:
        text = segment["text"].strip()
        # 日本語の場合、長い行の折り返しは不要な場合が多いため、改行のみとする
        formatted_text += text + "\n\n"
    
    # 結果をファイルに保存
    output_filename = f"transcription_{filename.rsplit('.', 1)[0]}.txt"
    with open(output_filename, "w", encoding="utf-8") as f:
        f.write(formatted_text)
    
    print(f"文字起こし結果を {output_filename} に保存しました")
    
    # ファイルのダウンロード
    files.download(output_filename)
    
    # 一時ファイルの削除
    os.remove(wav_filename)

print("すべての処理が完了しました。")

ポイント解説

1. 音量正規化(audio.normalize()

これが最大のポイント!

audio = audio.normalize()

NotebookLMで文字起こしできなかった原因は「音量が小さすぎる」ことでした。normalize()を使うことで、音声のレベルを均一化し、小さい音声でも認識できるようになります。

2. 日本語の明示的指定

result = model.transcribe(wav_filename, language="ja")

language="ja"を指定することで、Whisperが日本語に最適化された認識を行います。これにより精度が大幅に向上します。

3. mediumモデルの使用

model = whisper.load_model("medium")

モデルサイズは以下から選べます:

  • tiny: 最速だが精度低い
  • base: 速くて軽量
  • small: バランス型
  • medium: 高精度(おすすめ)
  • large: 最高精度だが処理時間が長い

日本語の場合、medium以上がおすすめです。

結果

音量が小さくて認識できなかった音声ファイルも、このコードで無事に文字起こしできました!

Google Colab / 音声データ_音量小さくてNotebookLMで文字起こしできない時

まとめ

音声文字起こしで困ったときは:

  1. 音量正規化で音声レベルを調整
  2. 言語指定で認識精度を向上
  3. 適切なモデルサイズを選択

Google Colabなら無料で使えるので、ぜひ試してみてください!


参考リンク:

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?