Communitygithub.com

小説推文ナレーション

小説推文の台本やネット小説の章、ストーリーをナレーションと役柄ごとに異なる声色で割り当て、ワンクリックで全体のナレーションWAV、役名付きSRT字幕、そして一文ごとのタイムライン manifest.json を生成するAIエージェントスキルです。

小説推文ナレーション とは?

「小説推文ナレーション」は、小説推文の台本、ネット小説の章、物語、ラジオドラマの台本などを、ナレーションと各キャラクターに異なる声色を割り当て、一つのコマンドで全体のマルチキャラクターナレーション(WAV)、役名付きSRT字幕、一文ごとのタイムラインを持つ manifest.json を生成するAIエージェントスキルです。このスキルは、Claude Code、Codex、OpenClaw、Cursor、WorkBuddy など、Python スクリプトを実行できるエージェントで動作し、ローカル環境にGPUは不要です。Miragea のオープンAPIを利用して音声生成をクラウドで行い、ローカルではPython 3.9以上の標準ライブラリのみで動作します。--dry-run オプションを使えば、APIキーなしでオフラインでフォーマットのテストが可能です。主な用途は、小説推動画用のナレーション作成、オーディオブックの制作、寝かしつけの物語、ラジオドラマのサンプル制作などです。声色は、アカウントに既にあるキャラクター actor_id を使うか、参考音声URLとその音声内の実際のテキストを指定して声のクローンが可能で、ナレーターの声色を固定できます。また、トーンタグや話速の調整、一文だけの修正にも対応しており、効率的な制作を支援します。

対応✓Claude Code✓Codex CLI✓Cursor
npx skills add https://github.com/yanghhu/miragea-voiceover-skills/tree/HEAD/skills/novel-video-voiceover

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

小説推文ナレーション は何をしますか?

「小説推文ナレーション」は、小説推文の台本、ネット小説の章、物語を、ナレーションと役柄ごとに異なる声色で割り当て、ワンクリックで全体のマルチキャラクター 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つのフック

  1. 結末を先に見せる:「結婚3年目、夫のスマホで、自分の死亡記事を見つけた。」
  2. 非常識な正体:「村中が私をバカだと思っている。でも私だけは知っている。彼らの心の声が聞こえることを。」
  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 setKey を生成し export MIRAGEA_API_KEY=...。または先に --dry-run を追加
speakers without a voiceそのキャラクターに actor_id= または ref= を追加
401Key を確認。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-run offline. Service: Miragea API (https://miragea.ai/v1).

キーワード:小説推文ナレーション、オーディオブックナレーション、マルチキャラクターナレーション、小説推文、小説ナレーション、AIオーディオブック、オーディオ小説、小説推動画、AI朗読、ラジオドラマナレーション、ストーリーナレーション、AIナレーション、声のクローン、字幕生成、SRT、audiobook、narration、text to speech

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

yanghhu/ai-podcast-voiceover

AI播客、播客配音、双人对谈播客技能:把文章、读书笔记、公众号文章或写好的对谈稿,整理成适合“听”的播客稿,单人主播或两位主持人各用一个音色,逐句配音并拼成整期节目 WAV,同时输出 SRT 字幕和逐句时间轴;再用 shownotes.py 根据稿件里的 `## 章节` 自动生成带时间戳的节目章节(chapters.txt / chapters.json)和完整文字稿 shownotes.md,可直接贴到小宇宙、喜马拉雅、Apple Podcasts 等平台的节目简介。改一句只重配一句。可用账号里的角色或本人授权的参考音频声音。由 Miragea 开放 API 生成语音,本地只需 Python 3.9+ 标准库、无需显卡,可 --dry-run 离线试跑;计费与限额以 capabilities 实时返回为准。适用于 Claude Code、Codex、OpenClaw、Cursor、WorkBuddy。AI podcast, podcast voiceover, two-host dialogue, show notes, chapters.

yanghhu/miragea-video-voiceover

AI配音、视频配音、文字转语音(TTS)、声音克隆与字幕生成技能:把口播稿、电影解说稿、小说推文、广告脚本、带货文案、有声书章节写成带 [角色] 标签的稿件,一条命令生成多角色配音 WAV、带时间轴的 SRT 字幕和逐句时间 manifest.json,直接导入剪映 / CapCut / Premiere / ffmpeg。音色可用账号已有角色,也可用参考音频 + 对应文本做声音克隆;支持语气标签、0.25–4 倍语速、停顿控制;已有音频 / 视频可识别成 SRT / TXT / JSON 字幕。内置口播、解说、带货、数字人、广告片、有声书 6 个节奏预设;改一句只重配一句。配音与字幕由 Miragea 开放 API 生成,本地只需 Python 3.9+ 标准库、无需显卡,可 --dry-run 离线试跑。适用于 Claude Code、Codex、OpenClaw、Cursor、WorkBuddy。AI voiceover, text to speech, voice cloning, multi-speaker dubbing and SRT subtitles.

関連スキル