gazou-compressor.jp

多言語/音声解説のマルチオーディオ実装

多言語/音声解説(副音声)はアクセシビリティとグローバル展開に直結します。HLS/DASH の標準に沿ってマニフェストで意味を表明し、UIは誤切替が起きない最小設計に。字幕/VTT併用し、検索性と体験を両立させます。

先に結論
HLSは #EXT-X-MEDIA(TYPE=AUDIO)、DASHは AdaptationSet@lang + Role。UIはネイティブ表記/保持/既定1つ。配信は 署名URLメトリクス をセットで。

要点(TL;DR)

背景:字幕と並ぶ“もう一つの支援”

字幕が視覚側の支援なら、音声解説は聴覚側の補完です。アクセシビリティの観点からも、ラベル/フォーカス/キーボード操作の配慮は必須です。

グローバル展開では、多言語音声は字幕よりも“没入感”の面で有利なときがあります。字幕と音声を併設し、ユーザーが選べる状態を保ちます。

設計:音源→パッケージ→マニフェスト→UI→配信→計測

  1. 音源準備 — 言語/音声解説の音量/LKFSを揃える。
  2. パッケージ — HLS/DASHへ多音声を格納。HLSは GROUP-ID を統一。
  3. マニフェスト — HLS/DASHの言語/Roleで意味を宣言。
  4. UI — ネイティブ表記、既定は1つ、最後の選択を保持。
  5. 配信署名URL とキャッシュで安全に。
  6. 計測 — 切替回数/失敗率/完走率を 指標に追加。

実装:HLS/DASH/HTML 抜粋

1) HLS (#EXT-X-MEDIA)

# main.m3u8(動画変種)
#EXTM3U
#EXT-X-VERSION:7
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio",LANGUAGE="ja",NAME="日本語",AUTOSELECT=YES,DEFAULT=YES,URI="audio_ja.m3u8"
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio",LANGUAGE="en",NAME="English",AUTOSELECT=YES,DEFAULT=NO,URI="audio_en.m3u8"

#EXT-X-STREAM-INF:BANDWIDTH=2500000,CODECS="avc1.4d401f,mp4a.40.2",AUDIO="audio"
video_1080p.m3u8

2) DASH (AdaptationSet/Role)

<!-- MPD 抜粋 -->
<AdaptationSet mimeType="audio/mp4" lang="ja">
  <Role schemeIdUri="urn:mpeg:dash:role:2011" value="main"/>
  <!-- Representations... -->
</AdaptationSet>
<AdaptationSet mimeType="audio/mp4" lang="en">
  <Role schemeIdUri="urn:mpeg:dash:role:2011" value="description"/>
  <!-- Representations... -->
</AdaptationSet>

3) UI 概念例

<!-- HTML(UIは実装依存。ここでは概念例) -->
<button data-audio="ja">日本語</button>
<button data-audio="en">English</button>
<!-- 直近の選択を localStorage 等に保持し、次回初期選択に反映 -->

4) 配信ヘッダ

# 配信ヘッダの例
# main/variant/audio m3u8 は共有長命。Vary は最小限
Cache-Control: public, s-maxage=86400, stale-while-revalidate=600

# 署名URLを適用する場合(例)
# X-Signature: token ...

NG/落とし穴

公開前チェックリスト

まとめ

マルチオーディオは“字幕の相棒”。HLS/DASHの標準に則って意味を明示し、UIと配信を最小で堅牢に設計すれば、アクセシビリティと没入感を両立できます。

FAQ

FAQ(よくある質問)

1HLS: #EXT-X-MEDIA の基本

#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio",LANGUAGE="ja",NAME="日本語",AUTOSELECT=YES,DEFAULT=YES,URI="audio_ja.m3u8"

プレイリスト側の AUDIO="audio" と一致させます。

2DASH: AdaptationSet/Role

<AdaptationSet mimeType="audio/mp4" lang="en"><Role schemeIdUri="urn:mpeg:dash:role:2011" value="description"/>...</AdaptationSet>

langRole を明示し、音声解説/副音声の性質を伝えます。

3ラウドネス/LKFSの整合

切替時の音量差は離脱要因。ITU-R BS.1770 系の測定/正規化で-24 LKFS付近に揃えます。

gazou-compressor.jp 編集部

画像圧縮・変換・背景除去などの実践テクニックと、Webで“速く・軽く・崩さない”ためのノウハウを発信しています。

関連記事

トピック/更新日の近いコンテンツ