メインコンテンツまでスキップ

資料説明の収録ファイル(開発中)

現在開発中です。 2026年11月2日確認の資料説明PoC作業ブランチの保存形式です。製品・マニュアルの主版0.36.4は維持しており、通常配布への追加リリースを意味しません。

概要​

資料説明の収録・再生は、ChatGPTタブで実際に再生された音声と、取得できた音声字幕、資料の表示画像、説明箇所と時刻を保存します。再生は保存データだけで行い、AIによる説明文生成や音声合成を行いません。

2026年11月2日の修正では、取得許可がない場合にChromeの標準タブ共有から音声へ接続できるようにしました。共有元の識別は接続中だけの一時情報で、収録JSONや通常ZIPへ追加しません。録音へ渡すのは音声だけで、共有時の画面動画やマイク音声はこのファイルへ収録しません。保存形式版1と既存の項目・参照関係は維持します。

このデータは記憶・会話・情報源のDuckDBテーブルへ追加しません。プロジェクトIDや記憶IDとの関連付けもありません。音声字幕は既存のTimeline会話記録とは独立しています。

利用条件​

対応する開発ビルドのMyMemAIVoiceChatで作成・再生します。旧版のMyMemや、一般のJSON閲覧ツールで読み込んだだけでは再生できません。保管・移動には「収録ファイルを書き出す」を使います。

使い方​

保存場所とファイル構成​

ブラウザー内では、拡張のOPFS(オリジン専用ファイル領域)へ保存します。

mymem-presentations-v1/
└── <収録ID>/
├── audio.bin
├── timeline.json
└── manifest.json

audio.bin は実際の収録音声のバイナリです。拡張子で形式を判定せず、manifest.audio.mimeType を参照します。timeline.json は資料画像と時刻付きイベントです。manifest.json を最後に保存し、一覧には保存完了を確認できる収録だけを表示します。保存途中の失敗や非対応の形式を、成功した収録として表示しません。

書き出す .mymem-presentation.json は、最上位に manifest、timeline、audioBase64 を持つ1つのJSONです。ブラウザー内の audio.bin をBase64にして同梱し、音声を再生成・再圧縮しません。

manifestの項目​

項目保存内容と再生画面での役割
format / versionmymem-presentation / 1。製品版や通常ZIPの形式番号とは独立
id収録全体のUUID。保存フォルダーと一覧の選択を対応付ける
title / createdAt収録名と作成日時。保存済み一覧の表示・新しい順の並びに使う
durationMs待ち時間を含む収録元の長さ。単位はミリ秒
audio.mimeType / bytes / sha256音声形式・バイト数・SHA-256。読込時にサイズと音声の整合を検証
pageCount / captionCount保存した表示画面数と音声字幕の発話シーケンス数。字幕の文字数ではない
interrupted接続中断・上限到達・発話途中の終了などを含む収録の印
trimSilence長い待ち時間を詰める選択
gapMs再生範囲の間に置く固定の無音。通常は短縮ONで300、OFFで0
ranges[]元音声から再生する範囲。各項目の startMs と endMs は元音声上の時刻

長い待ち時間を詰める場合も、元音声は全体を保持します。収録時の音量から発話範囲を作り、前200ms・後300msを残し、範囲間が1.5秒未満ならつなげます。再生位置から元音声の時刻への対応は、この確定済みの範囲と gapMs で毎回同じように計算します。再生時に発話判定をやり直しません。

timeline.pagesの項目とIDの関係​

項目保存内容と用途
id収録時に取得した表示範囲のID。events[].pageId の参照先
sourceUrl / title / 任意の pageNumber元の公開URL・タイトル・ページ番号。再生時にURLを開いたり再取得したりしない
text取得した資料本文。既存の記憶本文とは別の複製
viewport.width / height取得時の表示範囲。ポインタ座標の基準
image.dataUrl / width / heightPNG画像と画像サイズ。画面表示にそのまま使う
targets[]説明対象の id、text、kind(text/figure)、任意の role(heading/body/caption/figure)、rect(x/y/width/height)

targetId は同じ pageId の targets[].id とだけ対応します。元サイトの永続的なDOM IDやDuckDBの主キーではありません。同じ資料を再取得すると別の表示範囲として保存でき、録音ごとの画像・要素・時刻が一緒に残ります。

timeline.eventsの項目​

全イベントに type と atMs があり、atMs は音声収録開始からのミリ秒です。時刻順に保存します。

type追加項目と再生時の動作
pagepageId。この表示画像へ切り替え、それまでのポインタを消す
targetpageId、targetId、任意の settings。同じ画面内の対象へポインタを表示。targetId: null は非表示
caption任意の pageId、sequence、text、replace。ChatGPTの音声字幕を表示

settings は enabled(有効状態)、color(色)、size(大きさ)、highlight(強調表示)、animate(アニメーション)、duration(移動時間)の設定です。再生画面は収録した矩形と色・強調表示で説明箇所を表示します。caption.sequence は同じ発話の字幕更新を結ぶ番号で、MyMemの会話IDではありません。replace: false は直前の同じシーケンスの字幕へ追加し、true は訂正された全文で置き換えます。全文表示はシーケンスごとの最終字幕を連結します。

字幕の時刻は取得した時刻であり、単語ごとの音声認識・強制アライメント結果ではありません。字幕を取得できなかった収録は captionCount: 0 として、その旨を画面へ表示します。準備原稿を実際の発話として保存することはありません。

通常ZIP・SQL・旧形式との違い​

通常バックアップZIPは、既存のDuckDB・IndexedDB・選ばれた設定を収録します。このOPFSフォルダーは対象外です。通常ZIPの復元だけでは収録を移せません。必要な収録を個別に書き出し、新しい環境の「収録ファイルを読み込む」で戻します。インポート時は新しいUUIDのコピーとして保存し、同じ音声ハッシュ・ページID・要素ID・イベント時刻を保ちます。

以前の資料説明・準備原稿には、実際の音声と同期時刻の保存がありません。そこから収録済みデータへ自動移行はできず、あらためて本番収録します。未知の収録形式版は読込を拒否します。

DuckDBのDDL、キー、制約、インデックス、ビュー、通常ZIPのformatVersion 6と複製範囲は変更していません。この機能のための参照用SQLはなく、既存のSQLも変更不要です。構造と保存の照合は架空の資料2画面・合成音声・合成字幕で実施し、音声のハッシュ一致、独立ファイルの読込、ブラウザー再読み込み後の参照を確認しています。利用者のダンプは使用していません。

注意点​

収録ファイルは暗号化された保管形式ではありません。音声、字幕、資料の本文・画像・URLが含まれます。共有範囲を確認して保管してください。ブラウザーのデータ削除や拡張の削除で失われる場合があるため、必要なものは書き出します。

現在の上限は1収録30分・音声40MiB・200画面・2000字幕シーケンス・30000イベント、書き出し/読込ファイル128MiBです。入力時は形式・上限・ID参照・時刻の順序・音声のサイズとSHA-256を検証します。上限や保存容量で失敗した場合、画面を閉じる前に書き出せるか確認してください。

関連ページ​

収録と再生の操作 · 通常バックアップZIP · 全テーブルの列と型 · 送信とプライバシー