Communitygithub.com

viral-voice

フェイスレスリールに音声、ワードタイムキャプション、効果音を追加し、最終的な動画を仕上げます。無料のAI音声(マラヤーラム語、英語、ヒンディー語、タミル語など)、ElevenLabs、またはユーザー自身の録音に対応。アニメーションリールに音声やキャプション、効果音を付けたい場合や、viral-animateで作成したリールを仕上げ・レンダリング・エクスポートしたい場合に使用します。viralパックの第4ステップです。

viral-voice とは?

viral-voiceは、viral-animateで作成したフェイスレスリールに音声、ワードタイムキャプション、効果音を追加して最終的な動画を生成するAIエージェントスキルです。無料音声(edge-tts経由)、ElevenLabs、またはユーザー自身の録音ファイルをサポートし、各単語が発声されるタイミングに合わせてキャプションを表示します。無料音声はMicrosoft Edgeの読み上げサービスを利用したオープンソースのedge-ttsツールを使用し、マラヤーラム語、英語、ヒンディー語、タミル語など多くの言語に対応。自分の声で録音するオプションもあり、より自然な表現が可能です。このスキルは主にClaude CodeやターミナルベースのAIエージェント向けに設計されており、PythonとNode.jsスクリプトで動作します。setup.shを一度実行すれば、voice.pyで音声生成、sfx.pyで自動効果音、finish.pyで最終レンダリングと音声ミキシングを実行できます。また、音声が聞こえない問題に対処するため、ユーザーに録音の確認を促したり、発音が間違っている場合はscript.jsonに代替スペルを追加する機能も備えています。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/hadi-a-azeez/viral-agent/tree/main/skills/viral-voice

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

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

ドキュメント

viral-voice は何をしますか?

セットアップは一度だけ実行: bash setup.sh。このガイド内のスクリプトはこのファイルと同じ場所にあるので、フルパスを使用してください。

1. 音声を選ぶ

どれを希望するか尋ね、トレードオフについて正直に伝えてください:

オプションコスト品質キャプションのタイミング
無料音声 (デフォルト)無料明瞭、やや平板正確、各単語が発話されると同時にハイライト
ElevenLabs有料プランまたは無料クレジット最も自然モデルがタイムスタンプを提供する場合は正確
自分の声無料最もパーソナル各行内での推定。ビートごとに録音するとより正確

自分の声が最も良い結果をもたらす傾向があります。人が本気で言っている言葉は聞き手に伝わるからです。フェイスレスリールだからといって無声である必要はありません。

# 無料音声。マラヤーラム語の場合はMidhunを選択。--voice ml-IN-SobhanaNeural でもう一つのマラヤーラム語音声。
python3 voice.py <project>

# ElevenLabs。ELEVENLABS_API_KEYと音声IDが必要。マラヤーラム語はeleven_v3など、対応モデルが必要。
python3 voice.py <project> --engine elevenlabs --voice <voice id> --model eleven_v3

# 自分の録音、スクリプト全体を順番にワンテイク
python3 voice.py <project> --engine file --audio take.m4a

# 自分の録音、ビートごとに1ファイル (voice/b1.m4a, voice/b2.m4a)。この方がタイミングが正確。
python3 voice.py <project> --engine file --audio voice/

他のツールからの音声も --engine file で動作します。そのため、音声生成ツールが接続されている場合は、ビートごとに1ファイル生成してフォルダを渡してください。

録音の場合、各ラインはポーズ間の単語長でタイミングが計られるため、単一の長尺テイクではキャプションが最大約1秒ずれる可能性があります。実際の48秒のマラヤーラム語リールでのテストでは、ほとんどのキャプションは0.5秒以内に収まりました。ずれているように見える場合は、ビートごとに録音してください。

無料音声は、オープンソースの edge-tts ツールを通じてMicrosoft Edgeの読み上げサービスで動作します。これは公式APIではないため、変更されたり動作しなくなったりする可能性があり、クライアントや商用作業で使用する場合は事前に利用規約を確認する必要があります。ユーザーがビジネス用の動画を作成している場合は、この点を伝えてください。

2. 誰かが聴く必要がある

これらのツールでは音声を聞くことができず、timing.json はスクリプトの単語のみを表示し、実際に音声が何を言ったかは決して示しません。そのため、ここでは発音を確認する手段はありません。ユーザーに voice.wav を聴くよう依頼するか、文字起こしツールが接続されている場合は文字起こしして比較するよう依頼してください。どちらも行われなければ未確認であることをはっきり伝えてください。

音声が単語を間違って発音した場合は、script.json の該当ビートに "tts" を追加して正しく発音されるスペルを記述し、再度実行してください。キャプションは say を使用し続けます。可能な限り tts の単語数を say と同じにしてください。異なる場合、voice.py が注意を表示し、そのビートのキャプションタイミングは推定値になります。

ラインが早すぎるように聞こえる場合は、--rate (デフォルト +8%) を変更してください。--gap でビート間のポーズを設定します。

lint_script.py と timing.py による長さの推定は概算であり、10〜15%短くなる可能性があります。実際の長さは voice.py が出力するものです。目標の長さに合わせるには、--rate を変更するか単語を削減し、再度実行してください。

3. ピクチャーをもう一度確認する

実際の音声ですべてのタイミングが変わったため、最終レンダリング前に確認してください:

node <viral-animate folder>/render.mjs <project> --stills beats

stills/beats.jpg を開いてください。k、d または kit.at に連動したモーションは音声に従っています。固定秒数が指定されているものは従っていないので、scenes.js で修正してください。

4. 効果音

sfx.py は自動的に実行されます: 開始時に低いドスンという音、各ビートの切り替わりに静かなウィッシュ音が入ります。静かで感情的な作品の場合は、script.json で "sfx_auto": false に設定してオフにしてください。さらに追加するには、単語に紐付けてリストアップし、同期を保ってください:

"sfx": [{ "beat": "b2", "word": "charger", "kind": "pop", "db": -14 }]

word の代わりに "at": 1.1 を使用すると、ビート内の秒数で指定できます。ビートに含まれない単語を指定すると、明確なメッセージとともに停止します。種類:

種類音のイメージ適した場面
whoosh swell立ち上る空気の音変化、飛び込んでくるもの
swipe短い空気のブラシ音素早い動き
pop小さな丸いポップ音物が現れるとき
tickごく小さな乾いたチック音カウンター、小さな瞬間
click鋭いスイッチのカチッという音照明のスイッチ、ボタン
knock木をノックする音ドア、テーブル
thump低い打撃音オープニング、大きな展開
stamp重みのある強い平手打ち音決断、ポイントを決める場面

これらはすべて合成音なので、ライセンスリスクはありません。このパックには音楽は含まれていません。音声を明瞭に保ち、著作権侵害を避けるためです。ユーザーが音楽を希望する場合は、Instagramのエディターで追加できます。

5. 仕上げ

python3 finish.py <project>

これにより、実際の音声タイミングでフル品質のピクチャーをレンダリングし、効果音をミックスし、ラウドネスを約-14 LUFSに設定して final.mp4 を書き出します。--no-render を追加すると、サウンドのみのリミックスになります。

試用版: 他のフックをテストするには、プロジェクトフォルダをコピーし、別のフックの say を b1 に、その label をトップレベルの label に配置してから、コピーに対して voice.py と finish.py を実行してください。k、d または kit.at に連動したモーションは追従します。新しいフックに kit.at の単語がまだ含まれていることを確認してください。

その後、/viral-check に進んでください。その前にリールを完成したと言わないでください。

関連スキル