mimo-tts について
mimo-ttsは、MiMo-V2.5-TTS APIを使って音声を生成するコマンドラインスキルです。プリセット音声、テキストによる音声設計、音声クローン、歌唱、スタイル制御、ストリーミング出力に対応します。
主な機能
- 01プリセット音声での音声合成
- 02説明文からの音声設計
- 03音声クローン
- 04テキストと音声タグによるスタイル制御
- 05対応モデルでの歌唱生成
- 06PCM16での音声ストリーミング
活用シーン
- 01文章から読み上げ音声を作成
- 02指定した音声の特徴で音声を生成
- 03音声クローンによる朗読や歌の作成
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ wmy2981/ skills --skill mimo-ttsインストール後、Claude Code で/mimo-ttsを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
.claude-plugin/plugin.jsonreferences/api_doc.mdscripts/.env.exampletts.py詳細
MiMo-V2.5-TTS 音声合成
OpenAI 互換 API(/v1/chat/completions)経由で音声合成モデルを呼び出します。
実行ルール
依存関係、環境変数、設定を事前に確認せず、ユーザーが要求したコマンドをそのまま実行してください。問題がある場合は、スクリプトが明確なエラーを出して失敗します。その時点でのみ確認して修正してください。
要件
- 環境変数
MIMO_APIKEYが設定されている必要があります - ストリーミング出力:
pip install numpy soundfile
API の基本
- ベース URL:
https://api.xiaomimimo.com/v1 - 認証:HTTP ヘッダー
api-key - エンドポイント:
/v1/chat/completions(OpenAI 互換) - モデルと機能の対応関係:
| モデル | 機能 | 歌唱 | 音声デザイン | 音声クローン |
|---|---|---|---|---|
mimo-v2.5-tts | プリセット音声合成 | ✅ | ❌ | ❌ |
mimo-v2.5-tts-voicedesign | テキストからの音声デザイン | ❌ | ✅ | ❌ |
mimo-v2.5-tts-voiceclone | 音声クローン | ❌ | ❌ | ✅ |
⚠️ テキスト入力:ファイルリダイレクトを使用
すべてのテキスト内容(合成するテキスト、音声の説明、スタイルのプロンプト)は、必ず先に txt ファイルに書き込み、$(cat) 経由で渡してください。
# Write text to file first
echo "Text to synthesize" > tts_text.txt
python scripts/tts.py synthesize "$(cat tts_text.txt)" --voice Bingtang
スタイル制御ガイド
MiMo-V2.5-TTS には、組み合わせて使用できる、相補的なスタイル制御方法が 2 つあります。
1. 自然言語による制御(推奨)
スタイルの説明を user message に記述します。希望するスタイルを 1 文で説明してください。
簡単な例
Speak in a bright, uplifting tone as if reporting good news to a boss, slightly fast pace, with excitement and pride that can't be contained, voice bright and energetic.
Use a bright, lively teenage voice with the smugness of a successful prank, fast pace with light articulation.
ディレクターモード(上級)
俳優に演技をつけるように、人物像、場面、演技指示を盛り込んで記述します。
[Character] The current head of a century-old distinguished family. Has lived in seclusion for years, with a strong sense of class alienation from others.
[Scene] In the shadow of the ancestral hall, watching the man who broke through security to find her.
[Direction] Cold, languid yet commanding low alto. Extremely slow speech, each word as if rolled on the tongue before release. Long silences between sentences. Heavy, solid voice with slight breathiness at tail ends.
使い方
# Natural language style → --user-prompt parameter
python scripts/tts.py synthesize "$(cat text.txt)" --voice Bingtang --user-prompt "$(cat style.txt)"
2. 音声タグによる制御(詳細な調整)
タグは assistant content(合成するテキスト)に直接記述します。
スタイルタグ(テキストの先頭)
テキストの先頭に (style) を追加して、全体的なスタイルを設定します。
形式:(style1 style2)合成するテキスト
| 種類 | 選択肢 |
|---|---|
| 基本的な感情 | 喜び/悲しみ/怒り/恐怖/驚き/興奮/悔しさ/平静/冷淡 |
| 複合的な感情 | 物悲しさ/安堵/やるせなさ/罪悪感/憂いが晴れる/嫉妬/倦怠/不安/心を動かされる |
| 全体的な口調 | 優しい/クール/活発/真面目/気だるい/おどけた/深みのある/てきぱきした/鋭い |
| 声の特徴 | 深みのある/豊かな響きの/澄んだ/幻想的な/幼い/年老いた/甘い/かすれた/上品で豊かな |
| ペルソナ | アニメ声/年上女性の声/少年の声/おじさんの声/台湾アクセント |
| 方言 | 中国東北部の方言/四川方言/河南方言/広東語 |
| キャラクターのロールプレイ | 孫悟空/林黛玉 |
| 歌唱 | 歌う/sing/singing(必ずテキストの先頭に置く) |
例:
(怅然)这么多年过去了,再走过那条街,心里一下子空了一块。
(慵懒)再让我睡五分钟……就五分钟,真的。
(磁性)夜已经深了,我是今晚陪你的人,欢迎收听《午夜电台》。
(东北话)哎呀妈呀,这天儿也忒冷了吧!
(粤语)呢个真係好正啊!食过一次就唔会忘记!
(singing)原谅我这一生不羁放纵爱自由
音声タグ(テキスト内の任意の位置)
テキスト内に [tag] を挿入すると、細かく制御できます。
| 種類 | 選択肢 |
|---|---|
| ペースとリズム | 息を吸う/深呼吸/ため息/長いため息/息切れ/息を止める |
| 感情の状態 | 緊張/恐怖/興奮/疲労/悔しさ/甘える/後ろめたさ/驚愕/苛立ち |
| 声の特徴 | 震える/声が震える/声の調子が変わる/声が裏返る/鼻声/息混じりの声/かすれ声 |
| 笑いと泣き | 笑う/くすくす笑う/大笑いする/冷笑する/すすり泣く/むせび泣く/嗚咽する/号泣する |
例:
(紧张,深呼吸)呼……冷静,冷静。不就是一个面试吗……(语速加快)自我介绍已经背了五十遍了。
(极其疲惫,有气无力)师傅……到地方了叫我一声……(长叹一口气)我先眯一会儿。
(提高音量喊话)大姐!这鱼新鲜着呢!早上刚捞上来的!
音声デザインガイド
良い音声の説明を書く方法
mimo-v2.5-tts-voicedesign を使用する場合、user message のテキストがそのまま音声デザインの説明になります。具体的で生き生きとした説明ほど、良い結果が得られます。
主な要素
| 要素 | 例 |
|---|---|
| 性別と年齢 | 「20 代半ばの若い女性」、「50 代の中年男性」 |
| 声質/質感 | 「低く、ざらついた声」、「滑らかで豊かな響きがあり、深みのある声」 |
| 感情/口調 | 「温かく自信に満ちた声」、「優しいが、少し疲れがにじむ声」 |
| ペース/リズム | 「ゆっくりと、言葉を明確に区切る」、「非常に早口で、機関銃のように話す」 |
表現を豊かにする追加要素
- 人物像/ペルソナ:ナレーター、ポッドキャストの司会者、評書の語り手、深夜ラジオの DJ
- 話し方:くだけた口語調、きわめて真面目な口調、密談をするように声を落とす
- 場面の説明:自然ドキュメンタリーのナレーション、投資家向けのプレゼンテーション
- 時代の参照:1940 年代のフィルム・ノワール、1980 年代の吹き替え映画の声
書き方
簡潔な説明:
Heavy Russian accent, gruff middle-aged male, blunt and matter-of-fact.
専門的な説明:
一位年迈的老先生,说带北方口音的普通话,语速缓慢而沉稳,嗓音略带沙哑和沧桑感,仿佛一位饱经风霜的老爷爷在讲故事,充满岁月的智慧。
注意事項
- 長さ:1~4 文。網羅性よりも、核となる特徴が重要です
- 矛盾を避ける:「子どものような声+CEO のような存在感」など、相反する特徴を指定しないでください
- DSP 用語を避ける:リバーブ、エコー、EQ、コンプレッションなどには言及しないでください
- 曖昧な言葉を避ける:「普通」「一般的」などは使わないでください
- 中国語または英語:意図を最も正確に表現できる方を使用してください
- テキストと音声を一致させる:
assistantの合成テキストは音声の説明に合ったものにしてください
コマンドと使い方
1. プリセット音声合成(synthesize)
python scripts/tts.py synthesize "$(cat text.txt)" --voice <voice_id> [--output <path>]
自然言語によるスタイル制御:
python scripts/tts.py synthesize "$(cat text.txt)" --voice Bingtang --user-prompt "$(cat style.txt)"
音声タグによる制御(タグは text.txt に直接記述):
# text.txt content: (温柔)夜已经深了,欢迎收听我的节目。
python scripts/tts.py synthesize "$(cat text.txt)" --voice Bingtang
歌唱モード(mimo-v2.5-tts モデルが必要です):
# text.txt content: (singing)原谅我这一生不羁放纵爱自由
python scripts/tts.py synthesize "$(cat text.txt)" --voice Bingtang
2. テキストから音声をデザイン(design)
python scripts/tts.py design "$(cat voice_desc.txt)" --text "$(cat speech.txt)"
--text を指定しない場合は、マッチするテキストを自動生成します:
python scripts/tts.py design "$(cat voice_desc.txt)"
3. 音声クローニング(clone)
python scripts/tts.py clone <sample.wav> "$(cat text.txt)"
スタイル制御を使用する場合:
python scripts/tts.py clone <sample.wav> "$(cat text.txt)" --user-prompt "$(cat style.txt)"
4. ストリーミング出力
任意の合成コマンドに --stream を追加してください。ストリーミングには --format pcm16 が必要です:
python scripts/tts.py synthesize "$(cat text.txt)" --voice Bingtang --stream --format pcm16
python scripts/tts.py design "$(cat voice_desc.txt)" --text "$(cat speech.txt)" --stream --format pcm16
python scripts/tts.py clone sample.wav "$(cat text.txt)" --stream --format pcm16
5. 利用可能な音声の一覧表示
# Default JSON output
python scripts/tts.py voices
# Plain text output
python scripts/tts.py voices --format text
# Also available via the "tts" alias:
python scripts/tts.py tts "$(cat text.txt)" --voice Bingtang
プリセット音声一覧
| 音声 ID | 名前 | 言語 | 性別 |
|---|---|---|---|
mimo_default | MiMo-Default | 自動(zh-CN=Bingtang、それ以外=Mia) | — |
冰糖 | Bingtang | 中国語 | 女性 |
茉莉 | Moli | 中国語 | 女性 |
苏打 | Soda | 中国語 | 男性 |
白桦 | Birch | 中国語 | 男性 |
Mia | Mia | 英語 | 女性 |
Chloe | Chloe | 英語 | 女性 |
Milo | Milo | 英語 | 男性 |
Dean | Dean | 英語 | 男性 |
出力
- 音声はデフォルトで
~/.wmyskills/mimo-tts/outputs/に保存されます(--output/-oを使用すると、カスタムのパスまたはディレクトリを指定できます) - ストリーミングなし:JSON
{"status":"ok","path":"...","size_bytes":N} - ストリーミング:JSON
{"status":"ok","path":"...","samples":N}(size_bytesの代わりにsamplesを使用します) - エラー:JSON
{"error": true, "status": 4XX, "message": "..."} - すべてのコマンドは JSON を出力します
環境
MIMO_APIKEY— API キー。必須です。スクリプトは~/.wmyskills/.env(スキル間で共有)またはscripts/.env(こちらを優先)から自動的に読み込みます。テンプレートにはscripts/.env.exampleを使用してください。既存のファイルを上書きせずに、変数を~/.wmyskills/.envに追加してください。