Changelog

変更の記録

数字はすべて実測です。測っていないものは「推測」と書いてあります。 できないことも、できるようになったことと同じ場所に並べています。

0.2.0(2026-09-09)

0.1.0 をお使いの方へ。この版で一番大事なのは、素材一覧の不具合が直ったことです。

★まず直った 1 件(0.1.0 では編集の最初の一歩が塞がっていました)

  • 取り込んだ素材が素材一覧に出ないことがあったのを直しました。 0.1.0 では、起動したあとに素材を読み込んでも一覧は「素材がありません」のままで、 下の数だけが増えるという食い違いになり、タイムラインへ引けませんでした。 原因は、一覧を描き直す合図が一度も送られていなかったことです (0.1.0 の js フォルダ 145 本を調べたところ、描き直しの関数は定義の 1 行だけで、 呼び出しは 0 件でした)。この 1 点だけでも上げる値打ちがあります。

新しくできるようになったこと

長い収録で「終わりだけ音がずれる」を直せる

別々の機器で撮った素材は、頭を合わせても機器ごとの時計の進み方の差で終わりがまたずれます。

0.2.0 はその「進み方の差」を何か所かで測り、直線に乗ればクリップの再生速度で合わせます。

  • 実測(800ppm ずらした 30 分の素材): 頭を合わせたあとに 30 分後へ残るずれ 1.440 秒 → 0.009 秒(約 160 分の 1)。
  • 入り方: 「解析」→「音声で同期…」→ 頭を合わせるボタンの隣の「時計のずれも調べる」。 結果は「+805.0 ppm(1 時間で 2.90 秒)」のように、ppm と「1 時間で何秒」の両方で出ます。
  • Ctrl+Z で戻せます。

測れる範囲には限りがあります。正直に書きます。

  • 2 分未満の素材は測りません。 ずれは時間をかけて積もるものなので、原理的に測れません。
  • 名乗れる下限の実測: 5 分 ±268ppm / 10 分 ±129ppm / 20 分 ±64ppm / 30 分 ±42ppm / 45 分 ±28ppm。 0.01%(100ppm)のずれを確実に見つけられるのは 20 分以上あるときです。 5 分では 6 回試して 0 回、10 分でも 1 回しか「あり」と言えませんでした。
  • 「ずれが無い」と「測れない」は必ず言い分けます。見つからなかったときは 「この素材で見える下限は 42 ppm。それより小さいずれは、無いのか見えないのか区別できません」 と、その素材の下限を添えて出します。
  • つなぎ直した素材・録画が飛んだ素材には掛けないでください。 途中が欠けた素材は時計のずれと見分けがつきません。実測(30 分・中央で欠落): 欠落 0.05 秒 → 「-54.6ppm のずれ」、0.10 秒 → 「-91.3ppm」、0.30 秒 → 「-225.5ppm」と 誤って申告します。断れるのは 1 秒級からです。
  • 速さで直すので、書き出したファイルの音の高さがわずかに変わります (805ppm なら約 1.393 セント)。プレビューでは変わりません(書き出しだけです)。 同時に鳴る別音源とうなりが出ることがあります。
  • 直したあと、もう一度「調べる」で頭を合わせ直してください。 速さの補正だけでは頭が合いません。2 手で完全に揃います。 ★この 2 手目と、上の音の高さの断りは、画面にも出ます (素材ごとのセント数と、1 セントを超えたときのうなりの注意)。 0.2.0 を作る途中で、この説明が書かれているのにどこからも呼ばれていないことに気づいて繋ぎました。

「えーっと」「あのー」を探して、選んで切れる

0.1.0 には「声が出ていない時間」を切る無音カットしかなく、

「声は出ているが中身が無い」時間は手で探すしかありませんでした

(30 分の収録で 100 箇所を超えることもあります)。

  • 入り方: 音のあるクリップを選ぶ →「編集」→「文字起こし編集…」→ 「言い淀みを探す…」
  • 辞書は 21 語(言い切れる語 13 / 前後の条件つき 7 / 語尾 1)。 誤爆するのでわざと入れなかった語が 9 語あります。
  • 勝手には切りません。 候補は確からしさの高い順に並び、1 件ずつ入り切りできます。 各行に、飛べる時刻・確からしさの%・語・前後 14 文字の文脈が出ます。
  • 「探す強さ」を控えめ/標準/強めから選べます。強めにすると語尾の「ですね」なども拾います。 ★同じ素材でも結果が変わるので、「何も見つからない」ときは強さを上げてみてください。
  • 「文字だけ消す」もあります。映像は一切切らずに、本文から言い淀みの文字だけ取り除きます。 テロップ・字幕をきれいにしたいだけのときはこちらです。
  • 誤爆しないことの実測: 「あの人が言っていたんですけど」「えー!本当ですか」 「『あの』と『その』は指示語です」はいずれも 0 件(以前はここを 0.38〜0.53 の 確からしさで切ってしまい、言葉の解説企画は 5 行中 5 行が誤爆していました)。

限界

  • 言い淀みが何秒目にあるかは推定です。切る前に必ず目で確かめてください。 文字起こしは区間ごとの時刻しか持っておらず、語ごとの時刻はどこにもありません。 モーラ数の比で当て、波形があれば息継ぎの谷へ寄せますが、 波形は 0.05 秒に 1 点しかないので精度の上限は ±0.05 秒です。
  • 相槌の「あー」「うーん」も拾います。 対談・リアクション動画で切ると 相手への反応そのものが消えます。語だけでは区別できないので、人が判断する前提です。
  • 拾えないもの: カタカナ表記(エート / アノー)、「ええええと」のような同じ仮名の連打、 方言や個人の癖(「〜さ」「〜じゃん」)。
  • 文字起こし編集の画面でやったことは Ctrl+Z の対象外です。 文字起こしはプロジェクトに保存されず、画面を閉じれば消えます (切った結果そのものは Ctrl+Z で戻せます)。

診断タブに検査が 2 系統増えた(調べる種類が 6 → 13)

タイムライン下の「診断」タブ(「解析」→「編集を診断する」からも同じ場所)の条件バーに、

「伸びる条件(冒頭・テンポ・テロップ位置)」

「音の演出(ダッキング・BGM の起伏)」が増えました。どちらも既定で入っているので、

そのまま「検査する」を押せば一緒に調べます。指摘は今までと同じ 1 枚の一覧に時刻順で混ざります。

伸びる条件が見るもの:

  • 冒頭(縦型は 3 秒 / 横型は 60 秒)の画が止まっていないか、音の頭が遅くないか、 テロップの頭が遅くないか
  • 画が動かない区間(縦型 10 秒 / 横型 15 秒から指摘)と、声が入っていない時間の合計・割合
  • テロップが、配信先の UI を避けた箱の縦の真ん中 60% の帯に入っているか

「声が入っていない時間」は BGM と効果音を外して数えます。

外さないと、全編に BGM を敷いた企画で「間が長い」を丸ごと見逃します。

実測では、雛形 12 本のうち BGM を敷いた 9 本すべてが「無音 0.0 秒 / 0.0%」と出ていました。

警告の出方も測り直してあり、普通に編集した雛形 16 本で合計 142 件 → 21 件になりました。

音の演出が見るもの: 声にかぶる BGM が下がっているか(ダッキング)/

BGM が頭から終いまで平坦でないか・無音で戻るか・場面転換で動くか(起伏)/

効果音が 2 秒を超えていないか(2 秒ちょうどは合格)。

Chrome で本物の WAV を通した実測では、ダッキングを掛ける前は発話 6 区間すべてで下げ量 0.0dB、

掛けた後は 6 区間すべて 12.0dB になりました。

限界

  • 視聴維持率そのものは測れません。 公開後のデータが要ります。 言えるのは「冒頭 3 秒の画素差が平均 0.25 で、止まっているとみなす下限 0.3 を下回っている」 までの事実で、「維持率が何%になる」は言いません。
  • 「どれくらい動けば十分か」も言えません。 同じ動きを絵のきめだけ変えて測ると 画素差は 0.000(単色)〜19.912(細かい質感)と桁で変わります。 素材によらず言えるのは「止まっている」かどうかまでです。
  • 声か BGM かの見分けは推定です。 名前に手掛かりが無い素材は確からしさ 0.5 どまりです。 トラック名や素材名に「BGM」「SE」「ナレ」を入れると当たります。
  • BGM だけの企画(音楽 MV・B ロール)では、無音の検査そのものを出しません。 「この企画は声を前提にした検査が当てはまりません」と断ります(合格ではありません)。
  • 同じ種類の指摘が多いと頭打ちにして省略します。 実測で「54 件 → 12 件 + 省略 42 件」。 「12 件しか出ていない=12 件しか無い」ではありません。省略した件数は必ず書きます。

タイムラインの映像クリップにコマの帯が出る

0.1.0 では映像クリップの中身は音声波形だけで、絵が 1 枚も出ていませんでした。

0.2.0 では上下 2 段になり、上にコマの帯、下に音声波形が出ます。

実測: 中身の高さ 50px のうち帯 31px・波形 19px。音声クリップは今までどおり波形だけです。

マルチカムのグループ作成で、同時に音で合わせられる

「マルチカム」タブ →「グループを作る…」に「音で自動的に合わせる」が増えました(既定で入り)。

作るときに音の突き合わせが走り、進み具合が出て、途中でやめられます。

合わなかった素材は名前を挙げて「ずれ 0 秒のまま」と書きます(黙って 0 秒にしません)。

放送・納品の検査が「黙って間違える」のをやめた

  • EDL の存在しないタイムコードを、別のコマとして読み込んでいたのを直しました。 29.97 のドロップフレームには規格上「存在しない番号」があります。0.1.0 はこれを黙って受け取り、 00:01:00;00 を 2 コマ手前の 00:00:59;28 として読んでいました(警告も出ません)。 0.2.0 はその行だけ読み飛ばし、「このまま数えると別のコマになってしまうので断りました」と 警告に残します。実在する番号を誤って断らないことは 108,000 通り総当たりで確認しました。
  • 壊れた行(出点が入点より前)を、ディゾルブの送り出し行(尺 0)と区別して警告するようにしました。
  • 一覧に無いフレームレートを文字で渡すと 30fps で点検していたのを直しました。
  • 人物だけが動く実写でフィールド順を判定できず、しかも嘘の理由を返していたのを直しました。 0.1.0 は動きを画面全体の平均で測っていたため、背景が止まっていると動きが面積で薄まり、 「止まっている場面では原理的に決められません」という事実と違う説明を返していました (実際は判定に足る確信度がありました)。0.2.0 は画面を升目に分け、よく動く升目だけで測ります。 実測: 一部だけ動く 30 通りの絵で 14/30 正解 → 30/30 正解・誤答 0
  • 黒帯のある絵で同じ画素が 2 行に重複して報告される不具合を直しました。
  • 面積許容の指定が黙って別の値に化けていたのを直しました。空文字は「1 画素でも不合格」、 true は「許容 100% = 何も落ちない」に化けていました。
  • 知らない納品先が黙って無検査(実質合格)になるのをやめました。
  • EBU R103 の輝度判定を実装しました(原典 EBU R103-2000 v1.1 を読んで数値を確定)。 逸脱した画素の面積が 1% を超えたかを、検査結果の理由文で言い分けます。

挙動が変わる点(納品の判定に効きます)

「RGB に戻せない画素(invalid)」の合否が緩くなりました。

0.1.0 は 1 画素でもあれば無条件に不合格でしたが、0.2.0 は違法画素と同じ面積許容(既定 1%)に乗せ、

許容の内側なら注意(合格)にします。EBU R103 本文が「面積 1% を超えたときにだけ

out-of-gamut と表示せよ」と定めているためです。**1 画素でも落としたい場合は

面積許容に 0 を指定してください。**

限界: 判定に使っているのは EBU R103-2000(旧版)の数字です。

新しい QC 項目 0051B は別の数値を使っており、そちらには合わせていません。

作る側・配る側の変更

  • 「作ったのに画面に出ない」を機械で見張る検査を新設しました(npm test に入っています)。 このリポジトリで一番多い壊れ方は「バグ」ではなくモジュールが繋がっていないことで、 単体の自己診断では原理的に見つけられません。配線層が実際に呼んでいるかを原文照合で見ます。
  • 同じ検査を 2 度回して答えのぶれを見張る道を足しました(npm run test:twice)。 合否か項目数が 1 つでも食い違えば、1 度目が通っていても不合格に倒します。 ★これが初仕事で 1 件釣り上げました(下記)。
  • 壁時計で速さを見ていた検査を、較正式に直しました。 「1920×1080 の 1 枚が 200ms 未満」という判定は機械の混み具合で裏返っていました。 実測: 空きで中央値 105.9〜158.1ms、10 並列で混雑させると 308.5〜320.6ms(必ず落ちる)。 同じ場で基準の仕事を測ってその比を見る形にしたところ、実時間が 3.03 倍動く範囲で 比は 30.1〜43.1 に収まりました。
  • 0.1.0 の配布物に、作業用の走り書き 5 本(計 10,572 バイト)が混入していました。 0.2.0 では消してあります。当時の配布物の検査は 47 項目すべて合格と言いました (js/ の中身を見ていなかったためです)。同じことが起きないよう、 「js/.js 以外を置かない」を試験で見張り、配布物の検査でも js/__ を弾き、 配布物の検査を npm run dist の最後に繋ぎました。
  • 設定画面が TSUGIME の版を「Electron の版」として表示していたのを直しました (「Electron 0.1.0」という実在しない版が出ていました)。
  • 手順書 docs/publish.md の食い違いを直しました。転送(リダイレクト)の決まりが実物と逆、 存在しない画面(設定 → 更新)の案内、実際に出る文言と違うトラブル表の行、 引数 2 つ(--channel / --dist)の説明漏れ。
  • 自動で回る自己診断が 68 本・50,142 項目になりました (増分の 87% は言い淀みカット 1 本ぶんです)。

今もできないこと(0.2.0 で直していません)

  • multicam.js が持っている同期の仕組み(syncGroup)は、どこからも呼ばれていません。 同期の方式に「音声波形」という選択肢が用意され、実装もありますが、 呼び出し元が 1 つも無く(js/ 全体を調べて 0 件)、 さらに探している関数名が sync-audio.js のどれとも一致していません。 **マルチカムの音合わせは「マルチカム → グループを作る…」の 「音で自動的に合わせる」を使ってください**(こちらは別の経路で動きます。 0.2.0 で入った機能です)。同じ仕事をする道が 2 つあり、片方だけが繋がっている状態です。
  • 更新の配り先が決まっていません。 electron/updater.cjsDEFAULT_CONFIG.manifestUrl が空のままなので、この版は手渡しでしか届きません。 利用者側から URL を入れる手立てはありません(設定画面に更新の項目はなく、 足すべきでもありません。他人の exe を指させられるようになるためです)。
  • 配布物に署名していません。 更新の安全は「https で取れたこと」と 「sha256 が合うこと」だけに支えられています。

0.1.0(2026-09-08)

最初の配布版。