見出し画像

【配布】全自動で地声実況をVOICEVOX実況化 ~地声録画をテロップ付き読み上げ実況に自動変換~

割引あり

※本記事は最後の配布項目まで無料です

Ver2 作成しました。
機能と使いやすさが大幅に向上していますので是非ご検討ください。

こんにちはRcatです。

今回は地声の実況動画をVOICEVOX実況に全自動で吹き替えるツールを作成したので紹介します。

皆さん実況動画見たり、作ったりますか?
YouTubeの頃から知っていただいている方はご存知だと思いますが、私は作品の解説動画を出しています
そして、それはテキストを読み上げるソフトを使って音声と字幕を入れているいわゆるゆっくり実況というやつですね。厳密にはVOICEVOX実況ですが。ちなみにVOICEVOXというのは、無料のテキスト読み上げソフトです。

しかし、これは全ての字幕を入力した上で読み上げさせて作らないといけないので非常に手間がかかります。
ふと、今時流行りのAIを使えばなんとかなるのではないかと思い、地声で実況したものを読み上げ実況に変換できないか考えてみることにしました。

サンプル
本作を使って地声で収録したゲーム実況を読み上げ&字幕入れしています。
それ以外の編集ソフトは一切使用していません

こちらのような撮影しながら声を入れた動画も吹替可能

ちなみに、これまでの解説動画は全てパワーポイントで作成しており、以下の自作ツールを使って半自動で実況動画を作っていました。
プレゼンテーション形式の動画であれば、まだまだ現役ですね。

解説版はこちら



はじめに

利用規約

情報や作品の活用時は事前に利用規約をご確認ください。

https://note.com/rcat999/n/nb6a601a36ef5

コメントについて

利用規約のガイドラインを確認の上コメントしてください


概要

やること

最初に語っていますが、今回は事前に収録した地声実況をVOICEVOXの音声に差し替えます。
どうやってというのは別で詳しく話しますが、簡単に言えば動画の中で喋っている音声をテキストに変換して、ボイスボックスを使って読み上げを行い、その音声をもう一度動画にくっつけるということで吹き替えを行います。

機能

  • 地声実況の全自動読み上げ実況化
    実際に喋りながら収録した動画を、VOICEVOXの読み上げの動画に完全自動変換します。

    • キャラクター自由選択
      好きなキャラクターに喋らせることができます。

    • 話速追従
      発音区間を認識して話速を自動調節するため、自然な吹き替えが可能。

  • テロップ生成機能
    読み上げ時に使用するテキストを使って、自動的にテロップを挿入します。

    • フォントは自由に選べる

    • フォントカラーや大きさも自由

    • 枠線をつけられる

  • 生成AIによる自動校正
    音声認識の文字起こしミスによる誤字脱字を、テキスト生成AIを使って校正します。
    また、ルビ振りを行うことでVOICEVOXの読み間違いも防止します。

  • 音声のみ変換機能
    音声だけ別で収録している場合を考慮し、音声だけの変換機能もあります。

  • テロップの編集機能
    文字起こしに間違いがあった場合など、手動で訂正して読み上げから再開できます。


VOICEVOX(ボイスボックス)とは

VOICEVOXは、無料のテキスト読み上げソフトです。公式では中品質と言っていますが、気にならないくらい優秀です。
また、大きな特徴として一つのソフトの中に複数のキャラクターが入っており、この記事を書いた時点では30キャラクターが同梱されています。
以下の公式ホームページから取得することができます。
なお、こちらはダウンロードした後、起動しておくだけでOK。直接操作することはありません。
ツールの方からAPIにアクセスして操作するので、今回のような用途にも使える非常に優秀なソフトです。


対象/動作環境

動作環境

Windows11 で動作確認済み

PCの性能について
Googleの文字起こしを使う設定の場合は気にしなくてOK(デフォルト)。
文字起こしを自分のPCで行う場合は強力なGPUが必要(なくてもできなくはない)。

最低スペック(文字起こしを自分のPCで行う設定の場合)
以下の構成のPCでもサンプルと同じものを生成できることは確認しました。
GPU無効かつ昔の構成なので時間はかかります。
CPU i7 4710MQ
MEM DDR3 8GB
GPU 無効 (Quadro K2100M 2GB)

推奨スペック(文字起こしを自分のPCで行う設定の場合)
16GB以上のメモリを積んでいる。できれば32GB以上あると幅が広がる。
VRAM6GB以上のGPUを搭載していると文字起こしが高速化できる。精度を下げればVRAMが少なくても稼働は可能。
安いゲーミングPCではなく、まずまずのゲーミングPCくらいが推奨だと思ってください。

よくわかんないという方はタスクマネージャーを開いて、以下の項目を確認してください。

RcatのメインPCは以下です
GPU RTX2060 6GB (文字起こしmideam精度)(共有メモリ使えば最高精度可能)
MEM DDR4 48GB

対象

本作は、AIを使用するためモデルの取得など、多少の事前準備が必要です。
ツールを持ってきてダブルクリックで使うだけではないのでご注意ください。
そういうのがやれる方向け。それでも字幕手打ちから解放されると思えば断然やる価値はあると思います。


事前準備

最初にどの程度の準備が必要なのか書いておきます。

Pythonのインストール

本作はPythonでできています。
そのため、まずはPythonのインストールが必要です。
インストール方法については以下の記事で解説していますので、参考にしてください。

pyannote.audioの準備

こちらはPythonのライブラリです。
これを使うためにアクセストークンが必要なのでそれの準備が必要です。

まず最初にHuggingFaceのアカウントがない場合、作成してください。
HuggingFaceはAIのモデルなどが集まっているところだと思えばいいです。AI関連だとお世話になることが多いので、作っておいて損はないでしょう。

次に以下からspeaker-diarizationのページに進み、モデルを利用するための必要な登録を行ってください。
組織名とホームページが要求されるのですが、私は"個人"と"なし"で入力しました。個人情報を出すわけではないので、その辺は安心できます。
※すでにやってしまったので画像が用意できませんでした。

同意した後アクセストークンを作成します
以下のページからCreate new tokenを押して
https://huggingface.co/settings/tokens

タイプをreadで名前だけ入力して作ればOK
アクセストークンというとspeaker-diarization専用のトークンぽく感じますが、そういう細かい設定などはないので簡単2ステップです。

出来上がったらトークンをコピーしておいてください。
手順は多いですが、難しいことではないので簡単にやれるとは思います。

GITのインストール

文字起こしライブラリがインストール時にgitコマンドを要求してくるのでこちらからインストールを済ませておいてください。
試した感じ、とりあえずNextをポチポチ押していけば問題なくインストールできます。

FFMPEGのダウンロード

FFMPEGは動画データや音楽データを変換したり、編集したりできるツールです。
今回のツールの中で直接的にまたは間接的に使用されることがあるため、ダウンロードが必要です。
例えば動画から音声を切り離すのに使っていたりします。

こちらのURLにアクセスして以下のような手順でダウンロードができます。
今回はWindowsでやっているので、Windows版を選び選択肢が2つあるのですが、下の方が分かりやすそうなので下のリンクから選びます。
さらにその中にある"ffmpeg-master-latest-win64-gpl.zip"

パスを通す

今回はffmpegをそのままではなく、コマンドとして他のプログラムから呼び出すのでパスを通しておく必要があります。
いろんなところで使うので、パスの通し方については別途記事にしました。こちらをご確認ください。
なお、パスはフォルダに対して通すものなので、ダウンロードフォルダのままではなく、事前に別のところに移動しておくことをおすすめします。

もしわからなければ、本ツールと同じフォルダーにffmpeg本体を持ってくれば動くと思います。

パスを通し終わった後、コマンドプロンプトを起動してffmpegが起動すれば正常にパスを通せています。
黒い画面にffmpegと打ち込んでよくわからない英語がずらっと出てくればOK。
直接フォルダにコピーしてきた人はスキップ

VOICEVOXのダウンロード

一番上で紹介していますが、音声読み上げに使うのでVOICEVOXのダウンロードも行ってください。
こちらはダウンロードした後、起動しておくだけでOKです。適当に読み上げさせて、自分がお気に入りのキャラクターを見つけましょう。
0.20.0で動作確認済み


Difyの用意

自動文章校正機能を使う場合のみ
文章生成AIを使って音声認識テキストの校正とルビ振りを行います。
これにより手動での誤字脱字訂正と読み上げソフトの読み間違い処理などを大幅に減らすことができます。

Dify及びAIの用意に関しては以下のアップデート記事を確認してください。


実況データの用意

次のどちらかのデータを用意してください。

必要なデータ

  • 地声実況の動画
    自分の声だけであれば動画で大丈夫です。MP4形式で動作確認済み。
    それ以外の音声が入っていると精度が落ちたり、最終的に吹き替えた時にそれ以外の音は失われてしまいます。
    動画の場合は吹き替え後に自動で字幕を入れるところまでやります。
    カメラで撮った動画でも良いです。

  • 実況の音声データ
    ゲーム実況などでゲームの音声などが必要な場合はこちらです。
    自分の声は別で録音しておくというやり方です。
    本ツールを使って録音データから読み上げ、録音データを作成し、後で動画にくっつけ直します。

記事公開時点では、動画と音声を別に収録した場合は吹き替え音声の作成のみサポートしています。

おすすめの収録方法

ゲームや画面を録画するには次のような方法があります。

Windowsであれば、WindowsキーとGから起動できるデフォルトの録画機能があります。録画だけのショートカットキーはWin+Alt+Rです。
あるいはWindowsとSHIFTとRで範囲録画ができます(Windows11からの機能)。
ゲームなどを録画する場合は、WindowsとGキーの方がおすすめ。
デスクトップを録画する場合は範囲録画の方をおすすめします。

ちなみにデフォルトのゲーム機能で自分の音声が入らない場合、設定の方でマイクのボリュームが0になっていることがあります。
いくらマイクの設定を見直してもだめだと思ったらまさかの入力が0でした。

音声を単体にする場合は次のような方法があります。

Windows標準のサウンドレコーダーで録音することができます。
サウンドレコーダーを起動してから、デフォルトの録画機能を使用して問題なく、録音と画面録画の音声を分離することができました。

他にはDiscordのbotを使うという手もあります。例えば"Craig"という会話を録音するためのボットがいるのですが、こちらを使って録音するのもありでしょう。
というのもDiscordは強力なノイズキャンセル機能があるため、余計な音が入らないからです。その音声が録音できてしまうなら手っ取り早いということです。


全自動吹き替えを行う

さてさて、収録が終わったところで早速吹き替えをしていきます。
今回の解説では自分の声だけが入った動画ファイルを使って吹き替えを行っていこうと思います。

ツールを起動する

本作は全自動環境構築対応です。
データの中の"start"という歯車のアイコンをダブルクリックで起動できます。
初回は環境構築が入るので、それなりに時間がかかります。
ライブラリも重いので回線速度によっては数十分かかる可能性もあります。
また、データを指定していないので、初回は環境構築が終わると落ちます

設定を変更する

初回の起動が終わると設定ファイルが生成されます。
これをメモ帳あるいは任意のテキストエディターで開いてください。
中に色々書いてありますが、これを変更して設定を変えていきます。

各設定の詳しい内容は以下の通りです。
※アップデートで一部追加され画像と個なる部分があります。手元のconfigを見て確認してください。

  • diarization
    音声区間認識の設定

    • token
      speaker-diarizationの準備で作成したトークンを入力

    • usegpu
      GPU搭載パソコンではtrue推奨。
      使えない場合使わないだけなので使いたくないときはfalseにする
      つまりわからなければ変えなくて良い。

  • transcription
    文字起こしの設定

    • mode
      何を使って文字起こしをするか

      • sr(デフォルト)
        speech_recognitionのrecognize_googleを使って文字起こしをします。googleのサービスを使うので性能の低いパソコンでは推奨。オンラインである必要があります。

      • whisper
        whisperを使って文字起こしをします。
        自分のPCに音声認識AIをダウンロードして実行するため高性能なGPUを搭載している必要があります。

    • whisper
      whisperを使う場合の文字起こしの設定。
      ※このツールで一番重い処理。動かない、遅すぎる場合はあきらめてsrモードにすること。

      • model
        文字起こしを行うモデルの選択。
        tiny,base,small,medium,largeの中から選ぶ。デフォルト"medium"
        それぞれの要求VRAMは次の通り1G,1G,2G,5G,10G。VRAMをオーバーしても使えるが処理速度が落ちる。
        CPUで実行する場合も同程度の空きメモリが必要(実測。倍ではなかった)。

      • mode
        CPU/GPUのどちらかを使うかの設定。CPUでは著しく遅いのでGPUにすることを推奨。
        CPU使うくらいならそもそもrecognize_googleの方を使ってください。

        • CPUの場合"cpu"

        • GPUの場合"cuda"

  • voicevox
    音声読み上げの設定

    • characterid
      読み上げるキャラクターのID。IDの調べ方は下で別途解説します。

    • speed
      そのキャラクターが1文字読み上げるのにかかる時間
      -1にしておくと、初回に小説を読ませて自動計算します。
      入力しておいた場合、この手順がスキップされるのでほんの少しだけ起動が早くなります。

    • tolerance
      実際の音声と読み上げ音声の長さの差分の許容差(%)
      0-1で入力をする。デフォルトは0.1なので10%。完全に一致することはまずないので、小さくしすぎないこと。小さいほどやり直し回数が増えるので時間がかかるようになる。
      また、やり直し上限が決まっているので、小さくしたからと言ってその範囲に収まる保証はない。

  • videotelop
    自動テロップ入力の設定

    • font
      フォントを指定します。
      パソコン内にあるフォントファイルを直接指定してください。
      フォントの探し方は過去の動画で紹介していますので参考にしてください。
      https://youtu.be/I_AbMNtJjds?si=9wrvPCLqxvnJ-0cq&t=95

    • fontsize
      フォントのサイズをパーセントで指定します。0-1で入力。
      サイズは動画の高さに対して何%かで計算されます。

    • fontcolor
      フォントの色を設定します。左から順番に、赤緑青の強さを0から255までの数値で設定します。よくわからない方は、下記色のRGB指定についてを見てください。

    • strokewidth
      文字の枠線です。必要ない場合は0

    • strokecolor
      枠線の色です。フォントと同じでRGBで指定します。

ノイズ除去アップデート追加項目

  • noisereduction
    ノイズ除去の設定

    • enable
      ノイズ除去を使うかどうか。true/false

    • mode
      ノイズ除去のモード
      afftdnarnndnで選ぶ

    • afftdn
      基本的なノイズ除去機能の設定。軽い。

      • mode
        w,v,mのいずれか。ホワイトノイズ、ピンクノイズ、ブラウンノイズだそう。デフォルトホワイトノイズ。

      • level
        除去の強度。

    • arnndn
      AIと同じ学習済みモデルを使用して5パターンから最適なモードで協力にノイズを除去するモードの設定。
      別途モデルのダウンロードが必要。
      https://github.com/GregorR/rnnoise-models

      • model
        上記からDLしたモデルの中から使用したいモデルのパスを入力しておく。デフォルト録音スピーチ。

文章生成AI 自動校正アップデート追加項目

  • llm
    文章生成AIを使って音声認識のテキストを自動校正します。
    また、読み上げ用にルビ振りを行い正しい読みをさせます。

    • enable
      文章校正の使用可否
      falseにしておけば無効なので生成AIのセッティング等をしなくてよい

    • limit
      1回のリクエストで投げる文字数
      モデルの入出力の上限、トークン以内に収まるように設定する必要がある。
      動画全体の読み上げ文字数が上限よりも多い場合は自動的に分割されてリクエストします。

    • dify

      • apikey
        DifyのAPIのアクセスキーをここに貼り付けます。

      • server
        difyのサーバーのIPアドレス
        ローカルの場合はローカルホストやローカルIPアドレス

      • model
        どのモデルを使うかをここで指定する。
        デフォルトでは0:1.5Flash、1:1.5Pro、2:1.0
        使った感じ1.5Proじゃないと求めた精度は出ない。

    • userdictionary
      ユーザー辞書を設定します。
      この内容がAIにそのまま渡されるため、固有名詞などはここで紐付けておくと考慮してくれる

色のRGB指定について

RGB表記がよくわからないという方は、パワーポイントなどの色を指定する画面で色を選んでみてください。選ぶと赤緑青それぞれの数値が出てくると思います。これがRGB表記です。


動画を入力して完全自動吹き替えを行う

さて、一通りの設定を終えたら早速処理してみましょう。設定を変えない場合は次回以降はこのステップから再開できます。
まずは自分の声だけが入った実況動画を用意してください。

今回はMinecraftを30秒だけ実況して用意してみました。
生声なので公開できませんが…

そして、用意した動画をドラッグ&ドロップでツールに渡します。
この時渡すのは"start.bat"という歯車のマークのアイコンです。
ドロップすると黒い画面が立ち上がるので、処理が始まるまで待ちましょう。

処理が始まると黒い画面に今何をしているかというのが表示されますので、今これやってるんだと思いながら待ちましょう。

処理が完了すると、フォルダの構成が以下のように変わっています。
この中の"010_ExportMove"というフォルダーに吹き替え後の動画が入っています。

このフォルダーには2つのデータが入っており、片方がテロップなし、もう片方がテロップありとなります。

他のフォルダの中身について

処理が完了した後、複数のフォルダーが作成されます。それぞれ以下のようなデータが入っています。

  • 001_splitfiles
    生声を発言ごとに分割したファイル
    一言一言に区切られています。

  • 002_voicevox
    VOICEVOXで読み上げした一言ごとの音声ファイル

  • 003_joinwav
    002の一言ごとのファイルをつなげたファイル
    音声変換のみを行う場合は、ここのデータを使って自分で動画にアタッチする

  • 010_ExportMove
    全自動でVOICEVOX実況化された動画

  • 999_tmp
    処理中に出来上がった一時的なデータ。再処理などを行わないのであれば、削除して構わない

間違った文字起こしを直したい場合

さて、収録時にできるだけハキハキしゃべっておかないと音声認識で変な風に認識されます。
以下では、Rcatをハールキャットとして文字起こししており、誰だよって感じですね…。まぁ一般的な名詞ではなく、固有名詞なので認識しろっていうのにも無理があるといえば無理があるのですが。
また、ノイズ除去やAI校正を行うことで、より精度を上げることができます。

こういうのを直す時はどうすればいいのかについて解説しておきます。

誰だよ!

先ほど作業完了時のフォルダーが以下のようになっていると言いました。
この中にある"report.json"というファイルを編集して訂正することが可能です。

こちらのデータを開くと以下のようになっています。
もう分かりますね。文字起こしした内容が"text"というところに入っていますこの内容を直接修正してしまえば良いのです。

修正が終わったら、今度はこの"report.json"をツールにドラッグ&ドロップで起動します。
すると最初のステップがスキップされ、いきなり音声読み上げが始まります。
そして修正版ができるという仕組みです。

出来上がった動画サンプル

こちらが吹き替え後の動画になります。何も知らなければ元々が地声実況だなんて思えませんね。
テロップや音声読み上げを完全に自動化でき、本来やればかなり時間がかかるものが一瞬でできてしまいました。


音声データのみの吹き替えを行う

次にもう一つの機能として、別で音声だけを収録したデータを吹き替える機能を紹介します。

使える音声データ

動作確認ができているファイル形式はWAVとM4A、AACです。
プログラム上はMP3やOGGも行けるはずですがデータが無いので試してません。

音声だけを吹き替える

使い方は動画の時と同じです。
変換したいサウンドをドラッグ&ドロップでツールに渡すだけです。

ツールが起動すると同じく進捗が表示されます。
理論上はMP3やOGGデータでも対応できるはずです。
もしうまくいかない場合は、手動でWAVに変えておくのが一番確実です。

結果を確認する

動画の時に紹介しましたが、音声データは"003_joinwav"のフォルダーの中に入っています。
この中に作成された音声ファイルを再生して、正常に読み上げされていれば成功です。

Audacityを使って音声データを波形で見てみました。
上が吹き替え後で、下が私の地声データです。
波形が大きく振れているところは喋っているところになります。そして、その箇所に吹き替え後のデータも波形が現れていることが分かり、必要な箇所で吹き替えが行われていることが分かります。


VOICEVOXでキャラクターIDを調べるには?

IDを調べるには、APIで使われているところにアクセスする必要があります。
とはいえ、難しいことはありません。ショートカットが同封されているので、ダブルクリックで開くだけです。
なお、VOICEVOXが立ち上がった状態でないとアクセスできません

開くとなんかよくわからない文字列がずらーっと出てくるのですが、chromeの場合は左上にプリティプリントというチェックがあるので入れると整形されます。

そしてこの文字列は設定と同じJSONです。
1つの塊の中にキャラクターの名前とそのスタイルに関する情報が入っています。そしてスタイルごとにIDが割り振られており、これがキャラクターIDとなります。
例えばずんだもんを使いたい場合はID3番になりますね。
本家のエディターの方で好きなキャラクターとスタイルを選んだら、この一覧の中から該当するIDを探しましょう。


GPUが有効にならない場合

私の場合、自動でインストールされた状態ではGPUが使えませんでした。
pyannoteはAIで有名なPyTorchを使用します。これには様々な種類があり、どうやらpyannoteインストール時にCPUのみのバージョンが自動でインストールされるみたいです。そのためGPUが使えなかったのですね。

GPUを使う場合は一旦アンインストールしてからGPUバージョンをインストールします。

>venv\Scripts\activate.bat
(venv)>pip uninstall torch torchvision torchaudio
(venv)>pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

コマンドとかよくわからないという方は以下をダブルクリックするだけでOKですが、本来は自分の環境を確認してインストールしなければならないので、うまくいかないリスクはあります。

GPUバージョンは環境によってURLが異なるので、以下を確認して自分の環境にあったものをインストールしてください。


トラブルシューティング

ツールが落ちてしまいます

具体的な理由がわからないため対応できません。
次の"画面がすぐ消えてしまう"を確認してエラーメッセージを確認するようにしてください。

また、タスクマネージャーなどを確認し、メモリを使い切っていないか確認してください。使い切っているようであれば、パソコンの性能不足です。
文字起こしのモードをSRにするかwhisperの場合は精度を下げてください。
それでも落ちる場合は入力している動画が大きすぎてメモリをオーバーしている可能性があります。より、メモリの多いパソコンを使うか、小さく区切ってから入力してください。

ツールが落ちてしまいますが、画面がすぐに消えてしまうのでエラーメッセージが確認できません。

コマンドプロンプトを起動した上で、ツールを起動するようにしてください。この状態で起動すれば、画面が勝手に閉じることはありませんので、エラーメッセージを確認することができます。
もしエラーメッセージの内容がガイドラインに則る内容であれば、問い合わせをすることができます。

処理に時間がかかります

ライブラリが重いのでロードするだけでもう少し時間がかかります。

文字起こしにSRモードを使用していますか?
whisperモードになっている場合、自分のパソコンで文字起こしをするので、性能が低い場合は異常に時間がかかります。パソコンにGPUが搭載されている場合は使用するようにしてください。そうでない場合、AIを使用しているため時間がかかるのは仕様です。
SRモードにするか、動画のエンコードだと思って放置しておいてください。


解説について

解説はこちらにて行っております。


アップデート情報及び方針

ノイズ除去 & speech recognition アップデート 24/09/21

分析にかける前に音声からノイズを除去します。
これにより大幅な精度向上が見られました。
また、このアップデートでは一時データの整理なども行い、フォルダ構成を変更しました。

また文字起こしにspeech recognitionライブラリを使う機能を追加しました。
こちらを使えば自分のパソコンで文字起こしをしないので、性能の低いパソコンでも動くようになります。
ひとまずはこれをデフォルトとしました。

文章生成AIによる誤字脱字自動校正&読み仮名 24/09/28

ノイズ除去でも正しく認識できなかったり、漢字を違う風に起こしたり、固有名詞を正しく認識できなかったりする対策として、生成AIを使った文章校正を導入しました。
これにより文脈を意識した誤字脱字の訂正や、読み仮名を振ることによってVOICEVOXの読み間違いを防止することができます。

今後の予定(仮)

  • 複数キャラ同時吹き替え


配布

配布URL

以下のURLより本作の配布を行っています。

https://script.google.com/macros/s/AKfycbxdcr8pnazR7RbjaSICTtaNWfN7h_rjQrKlZ3h9CZpPRFzRILk1OGc8mZqKbF-NXNO9/exec?name=全自動VOICEVOX実況吹き替えツール

配布情報

ダウンロードには利用規約同意パスワードの他に、有料区間開示のキーワードが必要です。予めご了承ください。

ここから先は

62字

情報が役に立ったと思えば、僅かでも投げ銭していただけるとありがたいです。