スクリプトを解析してCloudflare Workers上の... ノート

スクリプトを解析してCloudflare Workers上のマルチスピーカーTTS APIで利用可能なマルチボイスMP3を生成する

著者は単一のスクリプトからマルチスピーカー音声を生成するウェブアプリケーションを開発し、従来のテキスト読み上げの制限を改善しました。このシステムは、緩やかなテキストを高度なTTSモデル向けに構造化された形式に変換し、演技指示や複数のキャラクターに対応します。バックエンドにはCloudflare Worker、データ用D1、MP3用R2が配置されており、Fish AudioのDrama 3モデルを利用しています。入力形式はラジオスクリプトに似ており、「名前:行」と四角括弧で配達指示を示します。重要な設計の選択として、名前のない行はナレーターにデフォルト化され、ユーザー体験が向上しています。解析は正則表現と語数ヒューリスティックで行われ、話者や行を識別し、散文におけるコロンには注意が必要です。アプリケーションはユーザー入力からコントロールタグを積極的に除去し、意図しないスピーカーの変更を防止します。ペイロード構築は文字を固有のスピーカーインデックスにマッピングし、正しい声割り当てを保証します。自動キャスティング機構により、キュレーションされたプールから割り当てられていないキャラクターに声を割り当て、ユーザーの選択を優先し重複を避けます。重要な発見として、TTSモデルが「モデル」ヘッダーが欠落または誤っている場合に別のモデルに静かにフォールバックするという点があり、明示的なピン留めとドキュメント作成の必要性が強調されました。堅牢なエラー処理には、小さな応答を却下し、スクリプトテキストやAPIキーのような機密データをログしないことが挙げられます。コスト計算は正確なペイロードのUTF-8バイトに基づいており、失敗時には控えめなクレジット予約と返金が適用されます。音声の持続時間はファイルサイズと固定ビットレートから推定されるため、オーディオデコーダーの必要性を回避しています。このシステムはシンプルさのために同期リクエストモデルを採用しており、短いスクリプトには適していますが、長めのスクリプトには制限がある可能性があります。大きな「落とし穴」として、iOSが適切なRangeリクエストサポートなしにサンプルMP3を再生しなかった(206件の部分的なコンテンツ応答)がありました。著者は、ナレーターに名前のない行をデフォルトで設定すること、キャストリストのプレビュー、コントロールタグの削除、モデルヘッダーのピン留め、正確なコスト見積もり、ビットレートの固定、Range対応のメディア提供など、ベストプラクティスのチェックリストを提供しています。プロジェクトではマルチボイスシーンを体験できる無料トライアルを提供しています。