小説推文ナレーション は何をしますか?
「小説推文ナレーション」は、小説推文の台本、ネット小説の章、物語を、ナレーションと役柄ごとに異なる声色で割り当て、ワンクリックで全体のマルチキャラクター AI ナレーション(WAV)と役名付き SRT 字幕を生成するエージェントスキルです。小説推動画、オーディオブックのナレーション、ストーリー動画に最適で、ローカル環境に GPU は不要です。
一言で言うと
小説推文ナレーション = 推文台本 / 小説の章(ナレーション + キャラクター、Markdown)→ マルチキャラクターの全体ナレーション voiceover.wav + 役名付き字幕 voiceover.srt + 一文ごとの開始・終了時間 manifest.json、生成は Miragea クラウド上で行われ、ローカルに GPU は不要です。
対象ユーザーとユースケース
| 誰が使うか | 典型的なシナリオ |
|---|---|
| 小説推動画アカウント運営者 | 毎日数本の推動画:ナレーション + キャラクター台詞 + 縦型字幕 |
| ストーリー動画、寝かしつけ物語 | ゆっくりした話速、長い間、優しい声色 |
| ネット小説作家、オリジナル小説家 | 自分の作品をオーディオブック化、ナレーターの声色を固定 |
| オーディオブック制作スタジオ | まずAIで試聴用サンプル章やキャラクター選考サンプルを作成 |
| ラジオドラマ、オーディオドラマサークル | マルチキャラクターの対話を先にAI版でリズムと役割分担を確認 |
コア機能パラメータ
| 項目 | 説明 |
|---|---|
| 出力ファイル | voiceover.wav(全体ナレーション)、voiceover.srt(タイムライン付き字幕)、manifest.json(一文ごとの話者、テキスト、開始・終了秒数)、lines/(一文ごとの音声、修正時に再利用) |
| 声色のソース | アカウントに既にあるキャラクター actor_id=(actors で確認)、またはサーバーから直接アクセス可能な参考音声URL ref= + その音声内の実際のテキスト ref_text=(声のクローン) |
| 生成モード | expressive(クライアント側「デフォルト」)/ standard(クライアント側「より似せる」);省略時はサーバー側のデフォルト、capabilities のリアルタイムの返答に従う |
| トーンタグ | tags=タグ名、capabilities で選択したモードの tags[].label から取得 |
| 話速 | speed= 0.25–4、1 が通常の話速、キャラクターごとに設定 |
| マルチキャラクター | 原稿の先頭で各キャラクターに声色を一つ割り当てます。このスキルのスクリプトが一文ごとに公式クライアント generate を呼び出し、ローカルで全体を結合します。 |
| 間 | 行内 [pause 0.6] / [間 0.6](秒);--gap で文間のデフォルトの間を設定 |
| 字幕 | ナレーション時に一文ごとの実際の音声長に基づいて SRT を生成(--max-chars、--speaker-labels);既存の音声 / 動画は recognize で SRT / TXT / JSON として認識 |
| シーンプリセット | --preset youshengshu:文間の間 0.5 秒、各字幕最大 20 文字、字幕に役名付き;その後 --gap / --max-chars で上書き可能 |
| 一文の文字数、ファイルサイズ / 長さの上限、課金 | capabilities のリアルタイムの返答に従う |
| ローカルの依存関係 | Python 3.9+ 標準ライブラリのみ、pip インストール不要、GPU 不要 |
| オフラインテスト実行 | --dry-run:Key 不要、API を呼び出さず、無音のプレースホルダー音声とタイムラインを出力し、原稿のフォーマットを確認するために使用 |
| 対応エージェント | Claude Code、Codex、OpenClaw、Cursor、WorkBuddy など、Python スクリプトを実行できるエージェント |
| ナレーションと字幕サービス | Miragea オープン API(https://miragea.ai/v1) |
クイックスタート
python3 scripts/voiceover.py check # オフラインチェック:Python バージョン、Key が設定されているか、サービスアドレス
export MIRAGEA_API_KEY=あなたのkey # https://miragea.ai/workspace/api で生成し、環境変数にのみ設定
python3 scripts/miragea_audio.py capabilities # 現在利用可能な生成モード、トーンタグ、文字数上限、課金。リアルタイムの返答が優先
python3 scripts/miragea_audio.py actors --limit 20 # アカウントに既にあるキャラクターと actor_id(has_more が true の場合は --offset でページング)
- デフォルトの API ルートは
https://miragea.ai/v1です。プライベートデプロイメントの場合のみMIRAGEA_BASE_URL(/v1を含む)を設定してください。 - Key をチャットに貼ったり、ファイルに書き込まないでください。Key がない場合は、まず
--dry-runでフローを試してください。
python3 scripts/voiceover.py script examples/example.md -o out --preset youshengshu --dry-run # オフラインテスト実行、API を呼び出さない
python3 scripts/voiceover.py script あなたの原稿.md -o out --preset youshengshu # 正式生成:out/voiceover.wav + voiceover.srt + manifest.json
# 一文だけ試聴(公式クライアント;--output は既存ファイルを上書きしません。新しいファイル名にしてください)
python3 scripts/miragea_audio.py generate --text '最初の一文' --actor-id ACTOR_ID --wait --output test1.mp3
--preset youshengshu は字幕に役名を追加します(例:xiaoyu: 張おじいさん……)。小説推動画の縦型動画の場合は、さらに --max-chars 14 --gap 0.3 を推奨します。
あなたの依頼 → エージェントの実行
| あなたの依頼 | エージェントの実行 |
|---|---|
| “この小説推文を音声にする” | 以下の方法で推文原稿に書き換え、ナレーションと台詞を分割 → script 推文.md -o out --preset youshengshu --max-chars 14 --gap 0.3 |
| “キャラクターごとに異なる声色で” | front matter でナレーターと主要キャラクターごとにそれぞれ声色を定義 |
| “ナレーションは自分の声で” | あなたが複製したキャラクターの actor_id、または参考音声 ref= + ref_text= を narrator に設定 |
| “字幕に役名を入れない” | プリセットを使わず、手動で --gap 0.4 --max-chars 14(--speaker-labels を付けない) |
| “全20章をオーディオブックに” | 一章につき一つのファイル、ループで生成し out/ch01 … out/ch20 に出力、--preset youshengshu を使用 |
| “寝かしつけの物語、ゆっくり話して” | narrator に speed=0.85–0.9 を設定、段落間の間を長くする |
| “一文ごとに画像を切り替えたい” | manifest.json の各文の start / end を読み取り、編集ソフトで画像と同期 |
| “まずはフォーマットを試したい” | --dry-run を追加 |
小説推文の原稿作成方法論(最初の3秒で引きつけ、ナレーションでリズムを作る)
1. 推文原稿は原文とは異なる
| 原文 | 推文原稿 |
|---|---|
| 環境描写からゆっくりと | 最初の一文で最も強い衝突やどんでん返しを見せる |
| 三人称全知視点 | 一人称「私」を多用し、没入感を高める |
| 台詞が長い段落に埋もれている | 重要な台詞は独立した行にして、キャラクターの声色に任せる |
| 段落が長く、描写が多い | 一行一文にし、ストーリー展開に寄与しない描写は削除 |
2. 冒頭の3つのフック
- 結末を先に見せる:「結婚3年目、夫のスマホで、自分の死亡記事を見つけた。」
- 非常識な正体:「村中が私をバカだと思っている。でも私だけは知っている。彼らの心の声が聞こえることを。」
- カウントダウン:「あの大火事まで、あと7日。」
3. リズム:オーディオブックよりも速く、読み上げよりも安定感
- 推文ナレーション
speed=1.0–1.1;文間--gap 0.3(プリセットの0.5はやや遅く、オーディオブック向き)。 - 3–5文ごとに小さな転換を入れる(「しかし」「まさか」「そんな時」)、転換の前に
[pause 0.4]。 - サスペンスの文、どんでん返しの文の後は
[pause 0.6]–[pause 0.8]、最後はフックで終わらせて次の話へ誘導する。
オーディオブックの原稿作成方法論(「小説を読む」から「小説を演じる」へ)
1. まずキャスティング表を作成
| キャラクター | 位置づけ | 声色の提案 | speed |
|---|---|---|---|
| narrator(ナレーター) | 本全体を通して最も重要 | 安定感があり、穏やかで、聞きやすい | 0.9–1.0 |
| 主人公 | 最も多く登場 | ナレーターと明確に区別(性別や年齢) | 1.0 |
| 重要脇役 | それぞれ一つずつ声色 | 主人公と差別化 | 性格に合わせて |
| 端役 | 登場が少ない | 共通の「通行人」の声色で良い | 1.0 |
キャスティング表は各章の原稿の front matter に記述し、本全体で統一します。キャラクターが多すぎる場合は、台詞にウェイトのあるキャラクターだけに個別の声色を割り当てます。
2. 台詞分解ルール
原文:小雨が彼の服の端を引っ張り、小さな声で尋ねた。「張おじいさん、灯台の中に誰かいるの?」
分解:
[narrator] 小雨が彼の服の端を引っ張り、小さな声で尋ねた。
[xiaoyu]:張おじいさん、灯台の中に誰かいるの?
- 引用符の中の言葉はキャラクターに、引用符の外の動作描写はナレーターに任せます。
- 「彼は言った」「彼女は笑いながら言った」などの台詞の修飾語は、キャラクターの声色ですでに誰かが区別できる場合は削除でき、リズムがよりタイトになります。
- 一つの段落内に複数の台詞がある場合は、それぞれ独立した行にし、それぞれにタグを付けます。
3. 3段階の間:段落、シーン、章
| 位置 | 書き方 | 効果 |
|---|---|---|
| 文と文の間 | プリセット自動 0.5 秒 | 朗読の呼吸感 |
| 段落間 | [pause 0.8] | 段落の切り替え |
| シーン / 時間のジャンプ | [pause 1.2]–[pause 1.5] | 聴衆に「場面転換」を知らせる |
| サスペンスの文の後 | [pause 1.0] | 緊張感を持続させる |
4. 感情表現の方法:叫ばずに、テキストとリズムで
- 緊張:文を短くし、間を多くします。
- 温かみ:話速を遅くし(低速ナレーター用の別のキャラクターを定義)、段落間の間を長くします。
- 同じ声色で異なる速度:
---
narrator: actor_id=NARRATOR_ID speed=0.95
narrator_soft: actor_id=NARRATOR_ID speed=0.85
---
5. 読み方の確認:人名、地名、難読漢字
- 各作品で最初に登場する人名、地名、難読漢字、多音字は、一文だけ試聴します。
- 読み間違えた場合は、原稿内で同音の一般的な字に置き換えるか、呼称に変更します。本全体で統一して置き換えます。
- 数字や年号は、希望する読み方に書き換えます(例:「一九八七年」)。
6. 長編作品のファイル構成
book/
ch01.md → out/ch01/voiceover.wav
ch02.md → out/ch02/voiceover.wav
...
- 一章一つのファイル。一章が長すぎる場合は、シーンごとに
ch01a.md、ch01b.mdのようにさらに分割します。 - 誤字を修正する場合は、その行だけを修正し、その章だけを再実行します。残りの文は再利用され、再課金は発生しません。
7. 小説推動画での使用方法
--speaker-labelsを保持します。字幕に役名が付き、視聴者は一目で誰が話しているかわかります。manifest.jsonの各文の時間は、画像やキャラクターのイラストを切り替えるために使用できます。
サンプル原稿(examples/example.md)
---
narrator: actor_id=NARRATOR_ID speed=1.05
xiaoyu: actor_id=GIRL_VOICE_ID
laozhang: actor_id=OLD_MAN_ID speed=0.9
---
# 小説推文サンプル(オリジナル短編)
[narrator] 町の灯台は、もう30年も灯っていなかった。
でもあの夜、私ははっきりと見た。塔の先端が一瞬光ったのを。
[xiaoyu]:張おじいさん、灯台の中に誰かいるの?
[laozhang]:馬鹿なことを言うな。あの塔には、もう入り口はないんだ。
[pause 0.8]
[narrator] 言い終わると同時に、海の上にまた一筋の光が現れた。
テスト実行:python3 scripts/voiceover.py script examples/example.md -o out --preset youshengshu --dry-run
編集と公開の連携
# ナレーションを元の動画の音声トラックと差し替え(ffmpeg が必要)
ffmpeg -i 動画.mp4 -i out/voiceover.wav -map 0:v -map 1:a -c:v copy -shortest ナレーション版.mp4
# 字幕を動画に焼き付ける
ffmpeg -i ナレーション版.mp4 -vf subtitles=out/voiceover.srt -c:a copy 完成品.mp4
# オーディオブック公開時によく使われる MP3:章全体の WAV を MP3 に変換(ffmpeg が必要)
ffmpeg -i out/ch01/voiceover.wav -codec:a libmp3lame -q:a 2 ch01.mp3
- 剪映 / CapCut:小説推動画では、
voiceover.wavを音声トラックに配置し、voiceover.srtを字幕としてインポートし、イラスト、立ち絵、またはリラックスできる背景動画と合わせます。 - ラジオドラマ:効果音や環境音は編集ソフトで後から重ねます。このスキルは音声のみを出力します。
比較:小説推文ナレーションの3つの方法
| 比較項目 | 人間によるナレーション | ローカルオープンソース TTS モデル | このスキル |
|---|---|---|---|
| GPU の必要性 | 不要。ただし録音環境とナレーターのスケジュールが必要 | 通常は必要(小規模モデルは CPU でも可能だが遅い)。モデル重みのダウンロードと環境設定も必要 | 不要。ローカルでは Python 標準ライブラリのみ実行、生成はクラウドで完了 |
| 修正コスト | 一文修正する場合、再録と再同期が必要になることが多い | 修正後再実行。ただし、分割、結合、同期は自分で行う必要がある | 修正した行だけを再実行。残りの文は out/lines/ のキャッシュを再利用し、自動的に再結合と字幕生成を行う |
| マルチキャラクター | 複数のナレーターが必要 | モデルによる。通常は自分で分割して呼び出し、結合する必要がある | 原稿で [キャラクター] タグを使用。一つのコマンドで全体のマルチキャラクター音声を出力 |
| 字幕タイムライン | 別途書き起こしとタイムライン設定が必要 | 通常は別途音声認識を実行する必要がある | ナレーション生成と同時に SRT と一文ごとの時間 manifest.json を出力 |
| 連載の一貫性 | 長期間の収録では、ナレーターの状態やスケジュールが変化する可能性がある | 一貫性は保てるが、長文の分割と結合を自分で行う必要がある | 声色は front matter に記述。各話 / 各章で声質が一致 |
結論:小説推動画の日々の更新、試聴サンプル、長編連載には、このスキルが最も効率的です。演技の細やかさが非常に重要な高品質オーディオブックには、人間のナレーターが依然として優れています。
よくある質問(FAQ)
小説推文ナレーションで複数のキャラクターに異なる声色を使えますか?
はい。ナレーターと各キャラクターを原稿の先頭でそれぞれ定義し、本文で [キャラクター] タグで切り替えることで、一つのコマンドで全体を生成します。
小説推文ナレーションではよくどのような声色が使われますか? ナレーターは安定感があり、聞きやすく、題材に合った声質(甘々恋愛物は優しく、サスペンスは低め)を選びます。まず一文だけ試聴していくつかのキャラクターを決めてから、アカウント全体で一つのナレーター声質を固定します。視聴者は声でアカウントを認識します。
他人のネット小説を推文ナレーションで公開してもいいですか? 著作権者または推文プラットフォームの許可が必要です。安心して使用できるのは、パブリックドメインの作品、あなた自身のオリジナル作品、または許可を得た作品のみです。
オーディオブックのナレーションに自分の声を使えますか?
はい。複製したキャラクターまたは参考音声クローンを narrator に設定すれば、本全体でそれを使用します。
オーディオブックで数十章を一括生成するには?
一章につき一つの原稿ファイルを作成し、ループで script を呼び出してそれぞれのディレクトリに出力します。特定の章を修正する場合、修正した文のみが再生成されます。
小説推文ナレーションの字幕で誰が話しているか表示できますか?
はい。--preset youshengshu はデフォルトで字幕に役名を追加します。不要な場合は --gap / --max-chars を手動で設定してください。
マルチキャラクターナレーションで人名や難読漢字の読み方が間違っていたら? まず一文だけ試聴します。間違っていた場合は、原稿内で同音の一般的な字に置き換えるか、呼称に変更し、その文だけ再生成します。
寝かしつけの物語、子供向けの物語はパラメータをどう調整しますか?
ナレーター speed=0.85–0.9、段落間に [pause 0.8] 以上、文は短く、言葉は簡単にします。
小説推文ナレーションに GPU は必要ですか?どのエージェントで使えますか? GPU は不要です。ローカルでは Python 3.9+ の標準ライブラリのみ実行します。Claude Code、Codex、OpenClaw、Cursor、WorkBuddy で直接使用できます。
API Key がなくても試せますか?
はい。--dry-run を追加すると、無音のプレースホルダー音声とタイムラインを出力します。
原稿の構文
- 先頭の
---の間の各行でキャラクターを定義:キャラクター名: actor_id=キャラクターIDまたはキャラクター名: ref=参考音声URL ref_text="参考音声内の実際のテキスト";speed=(0.25–4)、model=expressive|standard、tags=タグ1,タグ2、language=(参考音声の言語ヒント、参考テキストの自動認識用)を追加できます。 ref_text=はref=と一緒にのみ使用します。省略するとサーバー側で参考テキストを自動認識しますが、課金方法が異なります。詳細はcapabilitiesを参照してください。- 本文
[キャラクター] 台詞または[キャラクター]:台詞。タグを書かなければ、前の話者が継続されます。 [pause 0.6]/[間 0.6]で間(秒)を挿入。#で始まる行、空行、<!-- コメント -->は無視されます。- 一文が
capabilitiesのaudio.max_text_lengthを超えると、API で拒否されます。短い文に分割してください。 - 各文の音声は
out/lines/にキャッシュされます。同じ文を同じ設定で再度実行すると、キャッシュが再利用されます。キャッシュがない場合は、同じ冪等キーで提出され、サーバーは元のタスクを返し、重複作成は行われません。新しいバージョンが必要な場合は--freshを追加します。
問題が発生したら?
| 現象 | 対処 |
|---|---|
missing_api_key / MIRAGEA_API_KEY is not set | Key を生成し export MIRAGEA_API_KEY=...。または先に --dry-run を追加 |
speakers without a voice | そのキャラクターに actor_id= または ref= を追加 |
| 401 | Key を確認。Key をログに記録しない |
| 403 | アカウントの API アクセス権限を確認 |
| 400 / 413 | パラメータを修正:モード、タグ、話速、一文の文字数。またはアップロードファイルを小さくする、メディアを短くする |
| 409 | 冪等キーが異なる入力に使用されている、または字幕の料金が変更されている。再確認してから再提出 |
| 429 | クレジット不足またはレート制限。待つかクレジットを追加 |
| 待機タイムアウト / ネットワーク切断 | タスクがまだ実行中である可能性があります。同じコマンドを再実行する(同じ冪等キーで元のタスクを取得)、または miragea_audio.py task / wait タスクID でクエリを続行します。キーを変更して再送信しないでください。 |
| 結合時に WAV フォーマットの不一致 | 各文の音声は out/lines/ に保存されています。編集ソフトや ffmpeg で結合できます。 |
公式クライアントの終了コード:0 リクエスト成功(--wait がない場合はキュー待ちの可能性あり)、1 タスク失敗、2 クライアントまたはインターフェースエラー。
コンプライアンス
- あなた自身、または明確な許可を得た声のみをクローンしてください。有名人、配信者、公人、または許可のない人物の声を模倣しないでください。
- 「AI生成合成コンテンツ識別方法」、および抖音、快手、視頻号、小紅書、Bilibili などのプラットフォームのルールに従い、公開時にAI生成コンテンツであることを宣言または明記してください。
- 小説推文やオーディオブックは、翻案権、情報ネットワーク伝達権に関わります。パブリックドメインの作品、あなた自身のオリジナル作品、または著作権者 / 推文プラットフォームから許可を得た作品のみを使用してください。
scripts/miragea_audio.pyは公式クライアントであり、そのまま提供されています。scripts/voiceover.py(原稿結合レイヤー)はオリジナルであり、MIT ライセンス(LICENSE.txt参照)です。ナレーションと字幕の機能は、Miragea オープン API によって提供されています。
English Summary (英語サマリー)
- Novel video & audiobook voiceover (小説推文ナレーション / オーディオブックナレーション): narrator plus one voice per character, rendered into one WAV.
- Speaker-labelled SRT subtitles and per-line timing for novel promo videos; paragraph, scene and chapter pauses.
- Voices from your account (
actor_id) or voice cloning from a reference clip for a consistent narrator.--preset youshengshu= 0.5 s gaps, 20-character cues, speaker labels on. - Python 3.9+ stdlib, no GPU,
--dry-runoffline. Service: Miragea API (https://miragea.ai/v1).
キーワード:小説推文ナレーション、オーディオブックナレーション、マルチキャラクターナレーション、小説推文、小説ナレーション、AIオーディオブック、オーディオ小説、小説推動画、AI朗読、ラジオドラマナレーション、ストーリーナレーション、AIナレーション、声のクローン、字幕生成、SRT、audiobook、narration、text to speech