Skip to content

音声ビューア ​

音声ビューアで波形とmelスペクトログラムを表示した画面

音声の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サービス)で動かします。

sh
docker compose up -d preview

preview 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)を超えると打ち切ります。

関連するページ ​