見出し画像

Qwen3-TTSをWindowsで動かすメモと日本語化と文字起こし機能を追加したメモ


前置き

Windows11
python 3.12.9

日本語化と自動文字起こし機能を追加したものは python なんも知らん人がAIで作ったものなので覚悟がある人だけが使用してください。
使用は自己責任でお願いします。
バックアップを忘れずに。

本題

インストール

Qwen3-TTS

をインストールしていきます。
公式を見ながらやっていきます。

まず適当なフォルダでターミナルを起動し python の仮想環境を構築します。

python -m venv venv

アクティブ化

.\venv\Scripts\activate

Qwen3-TTS をインストール

git clone https://github.com/QwenLM/Qwen3-TTS.git
cd Qwen3-TTS
pip install -e .

この状態で Demo を実行しようとしてもできない。
CUDA どうのこうのいわれるので cuda を使うようにするために必要なものをインストールする。
まずは依存関係をきれいにするためにそれらをアンインストールする(ChatGPT談)。
入ってないのもコマンドに入ってるけどコマンドに入れてても問題ないからそのままでおkらしい。

今使ってる PyTorch を削除

pip uninstall torch torchaudio torchvision -y

アンインストールの成功と
WARNING: Skipping torchvision as it is not installed.
が出るが気にしなくていい。

CUDA 対応 PyTorch を入れる(cu128 の部分は俺の環境用なので自分用に合わせて変えてください)

pip install torch torchaudio --index-url https://download.pytorch.org/whl/cu128

これで動くはず
実行コマンド3種(俺用)FlashAttention 2 は入れるのがむずいっぽいので使わない設定です。
以下の三つのどれかを実行する。

qwen-tts-demo Qwen/Qwen3-TTS-12Hz-1.7B-Base --ip 127.0.0.1 --port 8000 --no-flash-attn
qwen-tts-demo Qwen/Qwen3-TTS-12Hz-1.7B-CustomVoice --ip 127.0.0.1 --port 8000 --no-flash-attn
qwen-tts-demo Qwen/Qwen3-TTS-12Hz-1.7B-VoiceDesign --ip 127.0.0.1 --port 8000 --no-flash-attn

起動するまで待ってからブラウザのアドレス欄に

http://127.0.0.1:8000/

打ち込む。

起動してる最中にSoXなんたらと警告が出るが一応使えてる。
SoX - Sound eXchange と ffmpeg をインストールすれば Wav 以外も使えるっぽい?

以上が使うまでのメモです。


WebUIの翻訳と機能追加

AIに頼んで作ったものなので自己責任でお願いします。
大事なことなので2回言いました。

新たにモデルを読み込むのでVRAMに気を付けてください。
VRAMから溢れた場合などどうなるのかわかりません。
一応俺の環境は RTX4080 VRAM 16G です。

あと3Gほどのモデルをダウンロードするので注意してください。

以下の demo.py ファイルを
Qwen3-TTS/qwen_tts/cli
にある demo.py と入れ替えてください。

そうすると中国語部分が日本語になるのと下記のモデルを使用して文字起こしをする機能を Clone & Generate と Save / Load Voice に追加します。

参考画像。

文字起こし機能に関する注意事項 (Notice Regarding Transcription Feature)

「文字起こし」ボタンを初めて押すと、文字起こし用のAIモデル(litagin/anime-whisper、約3GB)のダウンロードと読み込みが自動的に始まります。お使いの環境によっては、これに数分かかる場合があります。
モデルの読み込み中は多くのVRAMを消費します。2回目以降の文字起こしは、読み込み済みのモデルを使用するため高速に動作します。

44.1kHz Signed 16-bit PCM でのみ動作確認。
他の形式では動作しないと思います。
mp3は無理でした。
ffmpeg など入れてなにやらすればいけるっぽい?
まぁ俺は変換してから入力してます。

ライセンス

このファイルは以下のソフトウェアの一部を参考にしています(または移植しています)。
https://github.com/Zuntan03/EasyLlasa
Copyright (c) 2025 Zuntan
Licensed under the MIT License.

改変・追加部分の著作権:
Copyright (c) 2026 NullpoLab
Licensed under the MIT License.

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

zuntanさんありがとうございます。

以上です。

雑感

おっぱい

と言ってもらったら『違う、そうじゃない』となった。
アクセント? イントネーション? が違うよ。
まぁ、サクッと入力してやってみた感じだから色々設定をいじったり、リファレンスをきちんとしたりすれば変わってくるんだろうけど。

というわけで参照音声の文字入力めんどいなぁ、使わなくてもいいっぽいが使ったほうがいいみたいだしと思ってた。
そういや EasyLlasa で遊んでた時、プロンプト画面に文字起こしされたものが出てた気がしたのでできるんじゃないかと思った。
さらに、とりにくさんの翻訳こんにゃくというアプリのデモを見て、おーなんかできそうだ、となった。

てなわけで俺には無理なのでここでも Gemini CLI さんに登場してもらう。
demo.pyllasa.py を見せて、中国語部分の翻訳と音声から文字起こしできそう? と聞いてできそうとなったので、実現に向けてのステップを作成してもらって実装してもらった。
あっさりできた。

けど Save / Load Voice のほうに実装する指示を忘れて、そっちにも今やった実装を移植してと指示したら失敗して動かなくなったw
おいおい、と思いながら何度か修正依頼してもできず。
こうなると場当たり的な修正を始めるので一旦リセットするために、まず今やろうとしてるタスクを Gemini CLI 自身が理解できるようにまとめてと指示して、それをテキストに書き出すように言ってからセッションを閉じた。

そして新たなセッションでそれを読み込ませた上で実装手順を再帰的に精査するよう指示してまず確認してもらった。
んで実装してもらった。
あとはちょいちょい細かい部分、ボタンの配置やら参照テキスト欄を4行にしてもらったりして完成。

んで試してたら30秒制限のようで、30秒超える音声だとエラーになる。
それは何とかならないか、と思ったらどうやら chunk_length_s=30.0, この文自体がなかったようでこのコードを足したら30秒以上でもできるようになった。

ちなみにこれは音声をその数値の秒数で区切って処理するコードみたい。
そこでふと疑問に思ってAIに『このコード秒数指定できるけど、サンプリング周波数によって長さ変わるような気がするけど大丈夫なの?』と聞いてみた。

EasyLlasa を高音質にする時にサンプリング周波数を考慮して音声をカットしたのを思い出して大丈夫なのかと疑問に思った。
どうやらサンプリング周波数を考慮に入れて切ってくれる有能な機能なようだった。

それはそれとして、同じように色々試してたらどうにも文字起こしがうまくいかないことが多い。
長尺の音声だと抜けたり、言ってもいない文字が出てくる。
AIに聞いて(ChatGPTとClaude)試行錯誤しつつ直してもダメ。
こりゃ最悪自分で分割する処理を入れて(AIに頼んで)やるかーと思ったところ、あれ? chunk_length_s って音声分割処理だよな……と気づいてこれを15や10にしてみた。
すると、きちんと文字起こしがされた。
まじかーこれかー今までのあれこれしてたのは一体……となったがまぁそういうこともある。
っていうことで一応今のアップしてるプログラムでは 10 に設定してる。

これにて長尺音声で抜けなどは少なくなった。
とはいえそんな長尺の音声を前提にしてるのか、とか意味あるのかとかはまったくわからない。

そんなこんなでちょいちょい使ってみた感じ、日本語選択してもアクセントが結構違うことがある。
特に漢字だと中国語っぽい感じ? になることが多い気がする。漢字だけにね。HAHAHA。

権利関係がゆるくて非常に使いやすいのがいいね。

そういや俺のpython環境色々入っているんだよな、とふと思った。
通常 python に pyenv に anaconda に uv 。アプリを使う上で促されるままに入れてて python の開発環境には気を付けよう、みたいなのを見た気がしてこれって大丈夫なのか? と思ってる。

おっぱい。

いいなと思ったら応援しよう!