今回はアカウントも保存機能も入れません。ただし、将来「生徒・講師アカウント」「個別データの保存」「サブスク決済」を足すときに、作り直しにならない設計にしておきます。
御社のサンプル動画で精度・処理時間・費用を検証し、レポートで報告。結果を見て本開発へ進むか判断します。
アップロード/自動台本化/4話者の分離・可視化/ミュート・ソロ/台本同期/低遅延録音/プレビュー・書き出し。ログイン・保存はなし。
生徒・講師アカウント、教材の保存、自分の録音の履歴、講師によるコメント(講評)。教室ごとのグループ管理。
プラン別の利用制限(解析分数・保存容量)、決済、利用状況の分析。声の分離そのものを高度化する研究開発もここで検討。
機能は入れなくても、あとから足すための受け皿を最初から用意します。ここを怠ると、将来ほぼ作り直しになる部分です。
// 今回:常に「ゲスト」。将来ここに認証を差し込むだけで全体が対応する export async function getCurrentUser(): Promise<User | null> { return null; } // 保存先の抽象化:今回はメモリ実装のみ。将来はDB実装に差し替える interface SessionRepository { save(s: PracticeSession): Promise<void>; listByOwner(ownerId: string): Promise<PracticeSession[]>; } export const repo: SessionRepository = features.persist ? new PostgresSessionRepository() : new InMemorySessionRepository();
今回は保存しませんが、テーブル設計は最初に確定します。User は空の器として置き、すべてのデータがowner_id(未設定可)でユーザーにつながる形にします。
枠の色:オレンジ=今回のデータ構造(保存はメモリ) / 青=空の器として先に用意 / 点線=将来追加
ご提示の機能はすべてスコープに収まる想定です。そのうえで、優先度の考え方と、追加をおすすめしたい小さな機能をご提案します。
| 機能 | 区分 | コメント |
|---|---|---|
| 動画/音声のアップロード | 必須 | 動画は音声だけを取り出して解析します。 |
| AI話者分離(最大4人)とタイムライン | 必須 | PoCの結果で使用エンジンを決定。 |
| 自動台本化 | 必須 | 一体型APIなら話者分離と同時に取得でき、追加コストが小さい。 |
| ミュート/ソロ | 必須 | 区間ミュート方式(重なり・BGMの制約は「仕組み」ページ参照)。 |
| 台本の同期ハイライト | 必須 | クリックで再生位置へジャンプも実装。 |
| 低遅延録音・音ズレ補正 | 必須 | 最も工数と検証が要る部分。Chrome/Safariの実機確認を含む。 |
| プレビュー・WAV書き出し | 必須 | WAVで保存。MP3は後回しでも支障なし。 |
| 話者名・台詞の簡易手直し | 追加をおすすめ(小) | AIの取り違えや誤字は必ず出るため、講師が直せる最低限の編集があると実運用が安定します。 |
| 映像プレビュー(動画も表示) | ご相談 | アフレコは映像を見ながら行うことが多いため、映像の同期表示をご希望かご確認したい点です。 |
| MP3書き出し/スマホ対応 | 後回し | 将来フェーズで対応。 |
| 声そのものの分離(BGM・重なりの除去) | スコープ外 | 別技術。PoCの結果次第で、必要性を判断します。 |
| ログイン・保存・決済 | スコープ外 | ご要望どおり今回は実装せず、設計のみ先行。 |
PoCの結果でGo/No-Goを判断できるよう、前半にPoCを置きます。ご契約日により前後します。
サンプル受領、複数エンジンの比較、レポート作成。
結果のご説明と、本開発への進行判断・設計確定。
解析連携・タイムライン・ミュート・台本同期・録音・書き出し。途中で動くものを都度ご確認いただきます。
Chrome/Safariでの動作確認、音ズレの実機調整。
ソース一式・設計書・操作手順書をお渡しします。
