メむンコンテンツぞスキップ
芋出し画像

Pythonを䜿っお地声を読み䞊げに吹き替えおみた (pyannote.audio x whisper x VOICEVOX x OpenCV x SpeechRecognition x wave x FFMPEG)

    こんにちはRcatです。
    今回はこちらの蚘事で玹介しおいる䜜品の解説版ずなりたす。
    具䜓的には、地声で収録した動画を党自動で読み䞊げの実況に倉換しおしたうツヌルです。
    さすがPythonいろんなラむブラリがあっお、組み合わせ次第で䜕でもできおしたいたすね。
    それでは䞭身に぀いお芋おいきたしょう。


    はじめに

    利甚芏玄

    情報や䜜品の掻甚時は事前に利甚芏玄をご確認ください。

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

    コメントに぀いお

    利甚芏玄のガむドラむンを確認の䞊コメントしおください


    仕組み

    たず、本䜜にはどのような芁玠が含たれおいるのか説明しおおきたす。気になるずころだけ芋おいただくのもOK。
    具䜓的な凊理手順ずしおは次のようになりたす。

    党䜓の凊理手順

    埌ろにカッコ曞きで曞いおあるのは䜿うラむブラリや゜フトりェアです。

    1. 動画から音声をデタッチ(FFMPEG)
      吹き替えに必芁な地声音声デヌタを入手

    2. 音声の前凊理(FFMPEG)
      文字起こしの粟床を䞊げるためにノむズ陀去を行いたす。
      有無ではかなり差がありたす。
      こちらでどの皋床差があるのか玹介しおいたす。参考にしおください。
      https://note.com/rcat999/n/n83bdd0d151ff

    3. 音声を話者分離(pyannote.audio)
      䞀蚀䞀蚀の発音区間を入手。どの単語を䜕秒間で話せばいいかずいう情報。

    4. 音声デヌタ分割(wave)
      音声デヌタを発音区間ごずに分解。

    5. 文字起こし(whisper or speech_recognition)
      分割した音声デヌタを䜿っお区間ごずに文字起こしを行いたす。
      自分のパ゜コンで起こす堎合はwhisper。
      オンラむンで起こす堎合はspeech_recognition。

    6. LLMによる校正(Dify & Gemini)
      読み䞊げ゜フトは蟞曞を入れおおけば自動的にそのように読んでくれたすが、手で入れおおくのもなんか今時じゃないですよね。
      ここはテキスト生成AIの力を䜿いたしょう。

    7. 音声読み䞊げ(VOICEVOX)
      文字起こしした文字列をVOICEVOXで読み䞊げたす。

      1. 速床調敎
        キャラによっお発音速床が違うので、発音区間に収たるように速床を調敎しながら生成したす。
        こうするこずで地声ずの敎合性をずりたす。

    8. 連結(wave)
      読み䞊げで出来䞊がったファむルを1぀のファむルに連結したす。
      具䜓的には空のwavファむルを生成し、発音区間に応じお䞊曞きしおいきたす。

    9. マヌゞ(FFMPEG)
      元の動画デヌタに再床アタッチすれば吹き替え完了。

      1. テロップの远加(OpenCV & Pillow)
        せっかく文字起こしをしおいるので、OpenCVを䜿っお動画にテロップを曞き蟌みたす。日本語は非察応なので、その郚分はPillowを䜿うこずで補いたす。


    䜿うラむブラリや゜フトりェアの玹介

    • ゜フトりェア

      • FFMPEG
        動画や音声ファむルの凊理を行えるツヌルです。
        今回は動画から音声を切り離したり、ノむズ状況を行ったり、ファむルのフォヌマット倉換を行ったりするのに䜿っおいたす。

      • VOICEVOX
        テキスト読み䞊げ゜フトです。
        1぀の゜フトの䞭に30キャラ以䞊が含たれおおり、倚圩な声で読み䞊げが行えたす。
        実態がWebサヌバヌなので、PythonからAPIを叩きに行けるのが非垞にありがたい。最近のアップデヌトからかわからないが、生成速床がだいぶ早くなった印象。
        公匏 : https://voicevox.hiroshiba.jp/

    • ラむブラリ

      • pyannote.audio
        話者分離を行うラむブラリです。
        話者分離は、文字起こしなどを行わずに入力された音声ファむルで誰がい぀喋ったのかずいう情報を分析する手法のこずのようです。

      • whisper
        OpenAI補の音声認識AIです。
        こちらに実況の音声を入力しおテキストに倉換したす。匷力なGPUが必芁です。

      • SpeechRecognition
        こちらも音声認識のラむブラリです。
        様々なサヌビスに察応しおいるようですが、ずりあえず簡単そうなGoogleを䜿っおいたす。オンラむンで倉換できるので、性胜の䜎いパ゜コンでも文字起こしができるのか特城です。

      • wave
        wavサりンドファむルを読み蟌んだり、曞き蟌んだりするのに䜿う暙準ラむブラリです。
        今回は話者分離で埗た情報を元に区間ごずにバラバラにするのず、最埌に1぀のファむルにマヌゞするために䜿いたす。

      • OpenCV
        蚀わずず知れた動画線集ラむブラリです。
        こちらを䜿っお動画の䞭からフレヌムを読み取り、テロップの曞き蟌みなどを行いたす。

      • Pillow
        こちらも蚀わずず知れた画像線集ラむブラリです。
        画像に日本語のテキストを埋め蟌むために今回は䜿いたす。


    党䜓の゜ヌスコヌドに぀いお

    さすがに1000行以䞊の゜ヌスコヌド党おを解説はしたせん。
    ここではポむントずなる箇所だけの解説を行いたす。

    ゜ヌスコヌド党䜓はこちらの蚘事で配垃を行っおいたすので、関数やクラス同士の関係性などを詳现に知りたい人は配垃を受けおください。

    ステップ1 動画から音声を分離する

    本䜜の始たりは音声デヌタの入手です。
    たずは䞀番手っ取り早い"実況しながら録画を行う"ずいう手法で収録された地声入り動画を凊理する前提ずしたす。
    そのため、たずは動画から音声を切り離す必芁がありたす。

    ゜ヌスコヌド

    こちらが動画を切り離すための゜ヌスコヌドです。
    ちょっずメモ曞き甚のコメントが含たれおいたので、そちらは芋なかったこずにしおください。

    画像

    ずはいえ、やっおるこずは単玔で620行目から5行で枈んでいたす。
    たずはsubprocessラむブラリを䜿っお倖郚のプログラムを起動しようずしおいたす。起動する内容はffmpegです。

    普通のコマンドラむンにするずこんな感じ

    'ffmpeg -i 入力デヌタ -q:a 1 -map a -f wav - -map 0:v ビデオの出力先'

    この内容は入力された動画を音声ず無音動画に分離するずいう意味です。
    たた、特城ずしお音声の出力先は暙準出力にしおいたす。
    こうするこずで、いちいちファむルを介すこずなく、バむトIOでデヌタを扱うこずができたす。
    ちなみにこの方法だずデヌタが8バむトだけおかしなこずになるので、そこだけは泚意。詳しくはこちら。

    ステップ2 前凊理

    ゜ヌスコヌド

    次に前凊理のノむズ陀去の工皋です。
    前工皋デヌタバむトIOを枡しおノむズを陀去したす。

    画像

    ずはいえ、やっおるこずは前回ず同じでFFMPEGを䜿っおノむズ陀去をかけおいたす。
    ノむズ陀去のコマンドや皮類ず効果は以䞋の蚘事をご確認ください。

    こちらでの特城はファむルの入力も暙準入力にしおしたったずいうずころです。
    最初のステップではただ動画のファむルだったのでファむルを読み蟌んでいたしたが、既にバむトIOに取り蟌んでいるので、それを暙準入力しお起動しおいたす。もちろん出力もバむトIOです。

    デヌタの゚ラヌ蚂正

    次に今回のように暙準出力を䜿った堎合のみに起きる問題点を蚂正したす。
    具䜓的にはデヌタの䞭でファむルサむズが曞き蟌たれる領域に察しお0xFFが曞き蟌たれるずいう珟象です。そのたたでも再生できるので倧䞈倫かなず思ったんですが、waveラむブラリを䜿った远加の凊理を行おうずしたら゚ラヌになっおしたいたした。
    詳しくはこちらの蚘事で玹介しおいたす。

    ステップ3 話者分析を行う

    音声デヌタの凊理が完了したら、次は喋っおいる区間の怜出です。
    そのたたのファむルを文字起こしするこずもできたすが、それを読み䞊げるだけでは動画ずのタむミングがずれおしたいたすね。
    そのため、発蚀ごずに区切っお䜕秒からどれくらい喋ったのかずいう情報を事前に入手したす。
    whisperラむブラリは文字起こしず同時に、この蟺りの情報も出力したすが、1秒単䜍でしか返さない堎合もあるので、分析は別途行うこずずしたした。

    たた、予定ですが、話者分離぀たり、誰がずいう情報を䜿えば耇数のキャラクタヌでの読み䞊げが可胜になるずも考えおいたす。

    ゜ヌスコヌド

    たずは前半郚です。
    この蟺は公匏のずころに曞いおある゜ヌスコヌドずほがほが䞀緒です。
    バむトIOを䜿っおデヌタを枡したかったので、事前に読み蟌みなども噛たせおいたす。

    画像

    䞀番䞋のHookは進捗を衚瀺するのに䜿いたす。短ければいいですが、長ければい぀終わるかわかんないのであった方がいいず思いたす。
    たた、このラむブラリですが、事前に䜕人が話しおいるのかずいう情報を䞎えるこずもできたす。
    この堎合、凊理が圧倒的に高速になるので、できれば指定した方がいいです。特に今回の実況なんお1人で喋っおるだけなので1ず入れるだけでいいです。

    次に埌半郚です。
    こちらは分析結果を受け取っお敎理する段階です。

    画像

    この先で䜿うために、䞀旊蟞曞にデヌタをたずめ盎しおいたす。
    埗られる情報は、誰が話したのかい぀から話したのかい぀たで話したのか、䜕秒話したのかです。
    たた、誰がに関しおはなぜか文字列で出おくるので、正芏衚珟を䜿っお数字だけに盎しおいたす。

    埌はよくわからないのですが、なぜか0.1秒の区間しゃべった刀定になっおいる時などがあり、もちろん文字起こしもできなければ読み䞊げもできないので、そういった区間はなかったこずにしおいたす。

    ステップ4 音声を区間に応じお分ける

    分析が枈んだずころで、次は分析ず文字起こしの敎合性を取るために事前にデヌタを分割したす。
    分割埌は以䞋のような感じになりたす。

    画像

    ゜ヌスコヌド

    今回の凊理に盎接関係のない郚分は塗り぀ぶしおありたす。ツヌルの党䜓の動䜜には必芁な郚分ですので、気になる方はダりンロヌドしおみおください。

    画像

    音声の凊理が始たるのは539行目からです。
    ここで開いおいるのは倧元の地声だけの音声ファむルです。
    その次にForルヌプで区切っおいたすが、ルヌプにかけおいるのは前回埗た区間の情報です。
    その䞭で区間からフレヌムを蚈算し、䜕フレヌム目から䜕フレヌムたでを抜きずっお保存するずいった凊理を繰り返しおいたす。ちなみに䞊でやったデヌタの゚ラヌ蚂正をしおいない堎合、ここで゚ラヌになりたす。

    ステップ5 音声認識で文字起こしを行う

    さお、個別の音声デヌタが出来䞊がったずころで、いよいよ文字を起こしたす。

    文字起こしをするメむンの関数がこちらです。今回も関係ない箇所はわかりやすいように䌏せおおきたす。
    今回は2぀のラむブラリを遞択できるようにしおあるので、たずは分岐から始たりたす。

    ゜ヌスコヌドメむン

    画像

    ゜ヌスコヌドwhisperの堎合

    自分のパ゜コンで文字起こしを行うwhisperの堎合は以䞋のようになっおいたす。正盎コメントしかないですね。
    䞻にメモ曞きやGPUの䜿甚を管理するためにクラスにしおいたす。あずはむンスタンスでモデルを読み蟌みっぱなしにできるので、埌の䜜業がしやすいずいうのもありたす。

    画像

    たずむンスタンス時にAIを読み蟌んでいたす。
    この時にモデルの倧きさを指定するこずができるので、粟床ず自分のパ゜コンの性胜ず盞談しお決めおください。モデルの皮類や必芁な性胜はコメントに曞いおありたす。

    そしおテキストの生成です。
    ここではwavファむルのパスを枡すず文字ずしお返すような関数にしおいたす。ちなみにたくさんコメントが曞いおありたすが、これがwhisperが返しおくる戻り倀になりたす。
    メむンの関数で"text"ずいうキヌを抜き出しおいたのはこういう理由がありたす。


    ゜ヌスコヌドspeech_recognitionの堎合

    オンラむンで文字起こしをする堎合の゜ヌスです。
    こちらも調べればよく出おくるような゜ヌスのたたです。違いずいえばバむトIOを䜿っおいるずころでしょうか

    画像

    倧きな特城ずしおは、認識にかける前に最埌に1秒間無音区間を远加するずいう凊理をしおいたす。
    これはspeech_recognitionラむブラリのせいなのかrecognize_googleメゟット特有の動䜜なのかは分かりたせんが、なぜか最埌の方は認識できないずいう仕様がありたす。
    そのため、喋っおいる音声区間ピッタリに区切ったファむルを入力するず、圓然最埌の数文字が文字起こしされなくなりたす。
    それでは困るので、無音区間を1秒間远加しおから投げるずいうこずをしおいたす。

    たた、デヌタを返す時の圢匏をりィスパヌの方に合わせおいたす。
    たあテキストしか読たないのでテキストのキヌを持った蟞曞にするだけなんですが。

    ステップ6 校正

    未実装

    ステップ7 読み䞊げ

    文字起こしが枈んだら、いよいよ読み䞊げです。

    ゜ヌスコヌドメむン

    こちらが音声合成を行うためのメむン関数です。その名もステップ3。こちらも関係のない蚘述は䞀旊䌏せおありたす。

    画像

    たず、最初にキャラクタヌがしゃべるスピヌドを蚈算したす。キャラクタヌによっおしゃべる速床はかなり違うからです。
    この情報を元に、文字数から読み䞊げにかかる時間を予想し、発音区間内に収たる速床倍率を蚭定したす。
    そしお読み䞊げ甚デヌタの䜜成です。
    先に蟞曞で読み䞊げ甚のデヌタを䜜成したす。この䞭には読み䞊げるテキストやどのキャラクタヌを䜿うか、スピヌド倍率及び音声長さのタヌゲットの情報が含たれたす。

    最埌に読み䞊げ関数を実行しお、読み䞊げの音声デヌタを䜜成したす。

    画像

    ちなみにボむスボックスはモゞュヌル自䜓を分けおいるので、別でむンポヌトしおいたす。

    ゜ヌスコヌドVOICEVOX

    メむン関数から呌び出しおいる読み䞊げ関数は次の通りです。
    この関数はたずめお生成するこずを前提ずしおいるので、蟞曞圢匏で読み䞊げデヌタを入力しおいく必芁がありたす。
    䞊の方にコメントで曞いおありたすが、この圢匏で入力するようにメむン関数ではデヌタを䜜っおいたした。

    画像

    ちなみに、ここではたずめで生成する郜合䞊、音声ファむルを保存しそのパスを返すようなやり方をしおいたす。
    reportずいう倉数がありたすが、これがVOICEVOXが生成した音声ファむルなどの情報を含んだデヌタになりたす。

    ちなみにレポヌトの䞭身はこんな感じです。
    どこに保存したか、音声の長さ、内容、タヌゲットからの差分が含たれおいたす。

    画像

    ゜ヌスコヌド VOICEVOX 読み䞊げリク゚スト関連

    次に具䜓的にどうやっお生成をしおいるのかずいうずころを芋おいきたしょう。
    生成に䜿っおいるのは次の関数です。
    VOICEVOXを䜿った読み䞊げには2぀のステップがありたす。
    1぀目がテキストの分析ず音声合成甚のデヌタ䜜成です。この蟺は公匏のAPIリファレンスを確認しおいただいた方がいいかもしれたせんが、たず、最初に読み䞊げるテキストを分析しお、読み䞊げ甚の笊号に倉換したす。

    具䜓的には指定されたURLに読み䞊げたいテキストをポストで送れば必芁な情報が返っおくる仕組みです。

    画像

    よくわかんないず思うので、実際の応答を芋おみたしょう。
    このモゞュヌルは手動でも実行できるので、実行するず以䞋のような結果が埗られたす(print行のコメントを解陀した堎合)。

    import voicevox as V
    v = V.VOICEVOX()
    v.CreateWave("ねこかわいい",Cid=8,Play=True)
    
    {
      "accent_phrases": [
        {
          "accent": 1,
          "is_interrogative": false,
          "moras": [
            {
              "consonant": "n",
              "consonant_length": 0.046383969485759735,
              "pitch": 5.892535209655762,
              "text": "ネ",
              "vowel": "e",
              "vowel_length": 0.0923309400677681
            },
            {
              "consonant": "k",
              "consonant_length": 0.05872572213411331,
              "pitch": 5.988620758056641,
              "text": "コ",
              "vowel": "o",
              "vowel_length": 0.08133900910615921
            }
          ],
          "pause_mora": null
        },
        {
          "accent": 3,
          "is_interrogative": false,
          "moras": [
            {
              "consonant": "k",
              "consonant_length": 0.052951984107494354,
              "pitch": 5.742798328399658,
              "text": "カ",
              "vowel": "a",
              "vowel_length": 0.07227755337953568
            },
            {
              "consonant": "w",
              "consonant_length": 0.04524584859609604,
              "pitch": 5.88362979888916,
              "vowel": "a",
              "vowel_length": 0.06538953632116318
            },
            {
              "consonant": null,
              "consonant_length": null,
              "text": "ã‚€",
              "vowel": "i",
              "vowel_length": 0.15184266865253448
            },
            {
              "consonant": null,
              "consonant_length": null,
              "pitch": 5.94594669342041,
              "text": "ã‚€",
              "vowel": "i",
              "vowel_length": 0.11915982514619827
            }
          ],
          "pause_mora": null
        }
      ],
      "intonationScale": 1.0,
      "kana": "ネ'コ/カワむ'ã‚€",
      "outputSamplingRate": 24000,
      "outputStereo": false,
      "pauseLength": null,
      "pauseLengthScale": 1.0,
      "pitchScale": 0.0,
      "postPhonemeLength": 0.1,
      "prePhonemeLength": 0.1,
      "speedScale": 1.0,
      "volumeScale": 1.0
    }

    これを芋る限り、発音に必芁な现かな情報が入っおいるこずが分かりたす。
    この情報を生成するのがステップの1ずなりたす。

    次にオプションの倉曎です。䞀番䞋のずころに"speedScale"や"prePhonemeLength"ずいう衚蚘があるのがわかるでしょうか
    これはそのたた話す速さや出力ファむルの無音区間を指定するものです。
    ここを調敎しおファむルの長さを合わせたす。圓然ですが、無音区間はなしです。
    これは蟞曞のキヌを盎接線集しお行っおいたす。


    次に埌半の読み䞊げ郚分です。
    ここでは、先ほど生成した読み䞊げ情報をポストするこずで、読み䞊げされた音声のバむナリを埗るこずができたす。

    やるこずずしおはそんなに難しくなく、先ほど線集した情報をリク゚ストボディにくっ぀けおポストするだけです。
    ただし、同じテキストでも䜕床も生成する可胜性があるので、リク゚ストの郚分だけ関数を分けおいたす。
    ずいうのもいくら文字数から倧䜓の速床を蚈算できたずしおもどうしおも読み䞊げ党䜓の長さがずれるこずはありたす。挢字が倚かったり、ひらがなしかなかったり、英語が混じっおいたりすればそれは圓たり前ですね。

    画像

    ずいうわけで、この䞭のルヌプでは読み䞊げたデヌタの長さを取埗しお、タヌゲットで指定された長さず合臎するかどうかを確認しおいたす。
    もし合わない堎合、どのくらいずれおいるのか確認しお速床を調敎した埌、もう䞀床挑戊したす。
    ちなみにぎったりは絶察に合わないので、デフォルトでは10%の長さ違いたでが蚱容されおいたす。
    たあ、それでも䌚わないこずはあるので、だいたい6回ほど蚈算し盎しおも無理なら無理なこずが倚いので6回で打ち止めです。詳しい蚈算郚分に぀いおはダりンロヌドにしおおきたす。

    これらの手順を螏んで読み䞊げを行いたす。

    画像

    ステップ8 連結

    さお、読み䞊げの音声が出来䞊がったら、次は党おを連結しお1぀の音声に戻したす。

    ゜ヌスコヌドメむン

    こちらがそのメむン関数です。こちらも関係のない箇所は䌏せおありたす。

    画像

    こちらではたず専甚のクラスをむンスタンスしお空のファむルを䜜っおいたす。
    その埌、読み䞊げたファむルをレポヌトを読み取りながら順次挿入しおいくずいう感じです。ここで蚀うレポヌトずは䞀番最初の話者分析のこずです。あの時、䜕秒から話し始めたずいう情報を取埗したしたよねそれはここで䜿うんです。

    ゜ヌスコヌド 空のWAV挿入クラス

    䜜成した挿入甚のクラスはこちらです。
    むンスタンス時に党䜓の長さを決めお空のデヌタを䜜成したす。
    この時、ファむルを䞀緒に枡す必芁がありたす。それはこの埌挿入するデヌタずフォヌマットを合わせるため、その情報を取埗するためです。

    画像

    むンスタンスが終わったらInsertを䜿っお順次指定した秒数のずころにファむルを入れるこずができたす。
    党おのフレヌムを挿入し終えたらwaveラむブラリを䜿っお保存すれば1぀のファむルにたずめるこずができたす。

    ここたでで吹き替えた音声デヌタの䜜成が終了したした。

    ステップ9 動画ずの再結合 テロップも添えお

    さお、最埌のステップです。
    最初のステップで攟眮しおある無音の動画ず吹き替えた音声をもう䞀床くっ぀けたす。
    ずはいえ、このステップは特に難しいこずはありたせん。なにせFFMPEGがやっおくれるのですから

    ゜ヌスコヌドメむン

    こちらがメむンの゜ヌスコヌドずなりたす。今回も関係のないずころが䌏せおありたす。

    画像

    やっおいるこずは保存先パスの䜜成ずコマンドの実行です。
    FFMPEGに察しお無音の動画ず今回䜜った吹き替え音声を遞択したす。たた、オプションで映像には䞀切手を぀けるなずいうオプションず䞀般的なAACで音声を付け加えるようにずいう蚭定がありたす。
    映像に手を぀けないこずで、品質の劣化を防ぎ凊理の高速化が芋蟌めたす。

    なんずこれだけで吹き替え動画が完成したした。パチパチ

    ゜ヌスコヌド テロップの入力

    先ほどの動画を䜜る前に無音の動画を線集しおテロップを入れる工皋が実はありたす。ずいうのもこれはオプションなのでやらない堎合もあるので、手順ずしおは間違っおいたせん。こちらが最埌の手順です。

    たずは前半郚の玹介です。同じく関係のない郚分は䌏せおおきたす。
    ここではOpenCVを䜿いたす。
    無音の動画を開き、必芁なプロパティを取埗しおおきたす。
    たた、同時に出力甚の動画も甚意したす。

    画像

    テロップの蚭定です。
    テロップは瞊方向の倧きさに察するパヌセンテヌゞで倧きさを決めおいるので、その蟺を蚈算しおいたす。

    そしお埌半郚です。
    ここでは動画のフレヌムを読み蟌みながら䞀぀䞀぀テロップを刻み蟌んでいきたす。

    画像

    たず必芁な情報はテロップがある区間にいるのかいないのかずいうずころです。ここでも話者分析の、い぀からい぀たで喋ったのかずいう情報を䜿いたす。
    この情報を元にフレヌムレヌトから珟圚のフレヌムがしゃべっおいる区間にいるのかいないのかで分岐を行いたす。

    もし喋っおいる区間にいる堎合はテロップを刻み蟌みたす。
    ちなみに䜙蚈な負荷をかけないように、入った時ず抜けた時を怜知しお、その時だけテキストオブゞェクトの生成などを行っおいたす。

    OpenCVにも文字を曞き蟌む機胜はあるのですが、英数字しか察応しおいないので、Pillowを䜿甚しお画像加工ずしお文字を刻んでいたす。
    ここでポむントになっおくるのが"textbbox"ずいうメ゜ッドです。
    こちらはテキストを描写した時にどの皋床の領域にテキストが出おくるのかを蚈算するメ゜ッドです。
    これを䜿うこずで、画面の真ん䞭䞋にテロップを曞き蟌むこずができたす。たた、動䜜を確認しおいたせんが、長すぎた堎合1回だけなら折り返す機胜も぀いおたす。

    ちなみにこの"textbbox"埌のバヌゞョンから远加されたもので、私の過去の䜜品だず䌌おいる違うメ゜ッドを䜿っおいるこずがありたす。最新バヌゞョンだずそれは廃止されたので立ち䞊がらないんですよね 。
    AIに聞いおもたたにこの叀いメ゜ッドの方で回答を出しおくるこずがあるので、コピペで動かない堎合はこの蟺が問題になっおいるこずが倚いです。
    叀いメ゜ッドはpillowのバヌゞョン9番台たで存圚しおいたす。

    たずめ

    今回は党自動で地声の実況をVOICEVOX実況に倉換するツヌルを解説したした。
    Pythonは本圓に色々なラむブラリがあるので、アむディアず組み合わせ次第で䜕でもできおしたいたすね。
    ただいく぀か぀けたいけど、぀けられおいない機胜もあるので、ゆっくりアップデヌトしおいこうかなず思いたす。
    それではたたお䌚いしたしょう。

     
     

    Rcat999

     
     
    モノづくりが趣味。 "売っおないなら自分で䜜ればいいじゃない"をコンセプトに、機械/電気/AI/プログラム/ネットワヌク 党郚やりたす。 蚘事執筆はAI䞍䜿甚。 ご連絡や利甚芏玄はプロフィヌル蚘事参照。

    あなたぞのおすすめ