音声ビューア
![]()
音声のArtifactを開くと、音声ビューアが表示されます。波形とスペクトログラムを並べて表示し、クリックした位置から再生したり、ドラッグした区間を繰り返し再生したりできます。解析はブラウザで行い、外部のサービスやライブラリは使いません。
音声ビューアは、RunやデータセットのArtifactのプレビュー、Runの[Media]タブ、Compareのメディアの比較、共有レポートのメディアのブロックで使われます。
こんなときに向いています
- 推論で作った音声を、ノイズや途切れがないか波形で確かめながら聴きたい
- 気になる区間だけを繰り返し聴きたい
- 学習の途中の音声を、melスペクトログラムで比べたい
- 1時間を超える長い録音でも、全体のどこに音があるかを見たい
対応する形式
WAV、FLAC、MP3、Ogg、Opus、M4A(AAC)、WebMを表示できます。ブラウザが読めない形式では「音声をデコードできませんでした。ブラウザが対応していない形式の可能性があります。」と表示されます。
WAVとFLACは、保存したときにファイルの先頭を読み、長さ、サンプルレート、チャンネル数を記録します。そのため、音声をデコードする前から長さなどが表示されます。ほかの形式は、サーバーでプレビューを作るときにffprobeで読み取ります。
操作
| 操作 | 内容 |
|---|---|
| 再生、一時停止 | ツールバーのボタンで再生と一時停止を切り替えます |
| クリック | 波形かスペクトログラムをクリックすると、その位置へ移動します |
| ドラッグ | ドラッグした範囲をループ再生します。[ループを解除]で元に戻ります |
| ←、→ | 1秒ずつ前後へ移動します |
| 拡大、縮小 | 表示する範囲を2倍ずつ変えます。最も拡大すると0.05秒を表示します |
| 全体を表示 | 拡大を元に戻します |
| 表示位置 | 拡大しているときに表示されるスライダーで、表示する範囲を動かします。スライダーの上に、表示している範囲の時刻(「表示範囲 0:02.25–0:06.75」)が表示されます |
| チャンネル | 「すべて(平均)」か「チャンネル1」「チャンネル2」…を選びます。2チャンネル以上の音声で選べます |
| スペクトログラム | 「線形」(既定)か「mel」を選びます |
時刻は「分:秒.1/100秒」(例: 0:00.80)で表示します。波形とスペクトログラムの下には時刻の目盛りがあり、拡大すると表示している範囲に合わせて細かくなります。スペクトログラムの右上には、表示している最大の周波数(サンプルレートの半分)が表示されます。
再生速度を変える操作はありません。
スペクトログラム
スペクトログラムは、ブラウザで次の条件で計算します。
- FFTは1024点、hopは256サンプルです
- 横は最大2048列です。長い音声では、列ごとにまとめて表示します
- melは80バンドです
- −100 dBより小さい値は、最も暗い色で表示します
長い音声のプレビュー
64 MiBを超える音声は、ブラウザで全体をデコードするとメモリが足りなくなるため、ブラウザでは解析しません。代わりに、サーバーのpreview workerが、波形とスペクトログラムの画像を作ります。
| 状態 | 表示 |
|---|---|
| 作成中 | 「64MiBを超えるため、サーバーで波形とスペクトログラムを生成しています。再生はできます。」5秒ごとに状態を確かめます |
| 完成 | 全体の波形と線形のスペクトログラムを表示します |
| 失敗 | 「サーバーでの波形とスペクトログラムの生成に失敗しました。再生はできます。」 |
| プレビューがない | 「64MiBを超えるため、波形とスペクトログラムは表示しません。再生はできます。」preview workerにffmpegが無い場合や、preview workerを導入する前に保存した音声です |
完成したプレビューでも、クリックと←、→でその位置へ移動できます。拡大、チャンネルの選択、melは使えません。再生は必要な部分だけを読み込むので、数GBの音声でもすぐに再生を始められます。
サーバーでプレビューを作るのは、次のArtifactです。保存したときに対象かどうかを決めます。
- 64 MiBを超える音声
- 先頭を読んでも長さが分からない形式の音声(MP3、M4A、Ogg、Opus、AACなど)
- 動画(1秒目か、長さの10%の位置の早いほうのフレームを画像にします)
プレビューは、元のArtifactと同じProjectの.previews/<元のArtifact ID>/にArtifactとして保存します。元のArtifactは変更しません。preview workerを導入する前に保存したArtifactには、プレビューは作られません。
preview workerを動かす
preview workerは、APIとは別のプロセスで動きます。ffmpegとffprobeが必要なので、同梱のDockerfile.preview(Docker Composeのpreviewサービス)で動かします。
docker compose up -d previewpreview workerには、APIと同じデータベースの接続先(MMT_DATABASE_URL)、保存先の環境変数(ARTIFACT_FILESYSTEM_ROOT、S3_*)、MMT_STORAGE_SECRET_KEYを設定します。作業用の一時ディレクトリ(MMT_PREVIEW_WORK_DIR)には本体を丸ごと置くので、MMT_PREVIEW_MAX_SOURCE_BYTES(既定10 GiB)が入る空き容量が必要です。これより大きいArtifactはpreviewを作りません。ffmpegの1回の処理は既定で30分(MMT_PREVIEW_TOOL_TIMEOUT_MS)を超えると打ち切ります。