-
字幕の生成と字幕スタイルについて
オンデバイスのモデルを活用する字幕生成で、動画コンテンツのアクセシビリティを向上させましょう。この字幕生成は、発話音声の文字起こしや他言語の字幕の翻訳に対応したパワフルな新機能です。ユーザーが再生中に字幕スタイルをカスタマイズしてプレビューできる字幕スタイルのプレビュー機能と、AVKit、AVPlayerLayer、Media Accessibilityフレームワークの詳細な実装方法についても解説します。
関連する章
- 0:00 - Introduction
- 1:10 - Media authoring
- 2:14 - Subtitle generation methods
- 3:03 - Availability and support
- 4:31 - Presenting subtitles in your app
- 5:39 - Subtitle style preview
- 8:55 - Demo
- 10:20 - Next steps
リソース
-
このビデオを検索
こんにちは Jamesです AVFoundationチームのエンジニアです 旅行が大好きなので 今日は 字幕に関連する2つの機能を ご紹介します 字幕を利用する理由は様々です 字幕は耳が聞こえない方や 難聴の方にとって不可欠です またその他のアクセシビリティの ニーズがある方にも必要です コンテンツを理解するために 字幕が必要な方もいます 話し言葉の理解を助けるために 字幕を読む方もいます 物理的に音声が聞こえない時に 字幕を使います 混雑した空港にいる時などです Apple AIが生成した字幕は ライブで作成できます メディア再生中にデバイス上で ローカルに生成されます このビデオではまず Apple AIが生成した字幕が アプリにどう表示されるかをお見せします
その後 字幕スタイルプレビュー機能を ご紹介します 動画再生中に字幕を カスタマイズできる機能です
次に メディアアセットの 作成方法をご説明します
メディア制作の工程は通常 撮影から始まります 映像と音声コンテンツを 編集します 字幕とは 音声の話し言葉を テキスト化したものです これは手動で作成されます このビデオでは後ほど このような 字幕を「作成済み字幕」と呼びます コンテンツ作成者は複数の 字幕を作成できます それぞれが1つの言語に対応します 複数の音声言語を 作成することもできます 完成したメディアには映像 音声 作成済み字幕がすべて含まれます 複数の音声言語や字幕言語が あるコンテンツでも 視聴者が理解できる言語が 含まれていない場合があります
デバイスで生成字幕を作成することで そのギャップを埋めることができます 元のコンテンツに必要な字幕言語が 含まれていない場合に役立ちます これにより より多くの人が コンテンツにアクセスして楽しめます
次に 生成字幕の 作成方法をご説明します 生成字幕には2つの ユースケースがあります 最初のユースケースでは 音声から字幕が生成されます ソース音声がデバイス上の 音声テキスト変換モデルに入力され 字幕が作成されます これは「音声文字起こし」と呼ばれます 2番目は言語翻訳です 他の字幕から字幕が 生成されます ソース字幕は この場合英語ですが デバイス上の翻訳モデルに 入力されます 別の言語 例えばイタリア語の 新しい字幕が作成されます これは「言語翻訳」と呼ばれます 生成字幕は追加の言語を 提供します 作成済み字幕が優先され 変更されることはありません
嬉しいことに 何も実装しなくても 生成字幕が有効になります
動画再生中に自動的に 利用できます 生成字幕は多くの 再生シナリオで提供されます HTTP Live Streamingコンテンツで 字幕を生成できます TVチャンネルなどの ライブストリームも含まれます ビデオオンデマンドの映画や ドラマも含まれます 旅行動画やスポーツなどの ライブイベントも含まれます
ファイルベースのコンテンツも サポートされています アプリにバンドルされた動画や ダウンロード済みのメディアなどです
複数のコンテンツタイプが サポートされています 映画やシリーズなどの プロフェッショナルコンテンツも対象です ユーザー作成コンテンツも 対象です iPhoneのカメラ撮影や ソーシャルメディア動画などです
次に サポートされているデバイスと 言語をご紹介します 生成字幕は複数の デバイスで利用できます この表はサポートされているデバイスと 言語を示しています iOS および macOS 27から 英語音声から英語字幕を 生成できます tvOS および visionOS 27でも サポートされています また 英語字幕から複数の 字幕言語を iOS および macOS で 生成できます 生成字幕についてご理解いただいたところで アプリでの表示方法をご説明します 動画再生中に字幕選択UIを 提供することが重要です アプリの選択肢をご紹介します
iOS上の AVPlayerViewController UIです 字幕選択とプレーヤーコントロールを 完全に実装しています 追加の作業は不要です macOSのAVPlayerViewも 同様の機能を提供します これは AVLegibleMediaOptionsMenuControllerです 字幕選択コントロールを表示し 動作を実装します 既存のプレーヤーUIに 字幕選択UIを追加したい場合に プレーヤーコントロールを提供しないため 最適な選択です またはメディア選択のカスタム コントロールを実装することもできます アプリの他のコントロールの スタイルに合わせるためです 私のアプリで作成したものです 生成字幕はアプリのコンテンツを よりアクセシブルにします より多くの方がコンテンツを 理解して楽しめます
次に アプリをさらにアクセシブルにする 別の字幕機能をご紹介します 字幕はコンテンツを アクセシブルにするのに役立ちます 字幕の表示方法も 重要です 設定アプリでは長年 字幕とキャプションのスタイルを 選択・変更できます いくつかの組み込みスタイルがあります ニーズに合わせてカスタムスタイルを 作成することもできます 「Bold Yellow」という カスタムスタイルを作成しました 黄色いテキストに少し多めの ボーダーが付いています 読みやすくするためです 設定アプリでスタイルを 選択できます しかしより簡単で アクセシブルな方法もあります 動画を見ながら スタイルを変更できればより便利です それがまさに字幕スタイル プレビューの機能です
動画を見ながら Styleメニューを開いています 設定アプリと同じスタイルが 利用できます 字幕スタイルはメニューから 直接変更できます 動画再生中に字幕を 選択する場所から変更できます さらに スタイルのプレビューが表示され 選択がしやすくなります 動画での「Bold Yellow」スタイルの 見え方です いくつかの方法があります アプリに字幕スタイルプレビュー機能を 実装するためです まず iOS の AVPlayerViewControllerです 字幕スタイルプレビューと プレーヤーコントロールを完全に実装しています macOSのAVPlayerViewも 同様の機能を提供します
これは AVLegibleMediaOptionsMenuControllerです 字幕スタイルプレビューコントロールを表示し 動作を実装します 既存のプレーヤーUIに 字幕プレビューを追加したい場合は これを使うと良いでしょう 次に AVPlayerLayerには スタイルプレビューを表示するAPIがあります 実装方法をすぐにご説明します AVCaptionRendererも スタイルプレビューを提供できます ただしレンダリングは 自分で行う必要があります AVPlayerLayerの実装を ご紹介します システム内の各字幕スタイルには プロファイルIDが割り当てられています まず プロファイルIDで すべてのスタイルを取得します スタイルの名前で UIを構成します
スタイルが選択されたら スタイル適用済みプレビューを表示します 指定したスタイルで 新しい字幕が表示されます 既存の字幕は 自動的に非表示になります プレビューの妨げにならないようにするためです
textパラメータにはnilを渡します その場合 ローカライズされた システムテキストが表示されます
positionパラメータを使用して UIコントロールを避けます プレビューテキストの デフォルト位置からのオフセットです 別のスタイルを表示するには この関数を再度呼び出します 必要な回数だけ 呼び出すことができます
選択が完了したら プレビューを停止します これによりプレビューテキストが 削除されます アクティブな既存の字幕が 復元されます
選択したスタイルを設定します システム上のすべての字幕に 適用されます
アプリにこの機能を実装すると 動画を見ながら字幕をすばやく選択して 読みやすいスタイルに 変更できます 次に これら2つの字幕機能を まとめてご紹介します イタリアへのキャンプ旅行を 計画しています インスピレーションを得るために このキャンプ動画を見ます 英語字幕がありますが イタリア語字幕を使いたいです イタリア語の腕を磨くためです
言語を変更するために Subtitlesメニューを開きます Languageをクリックします いくつかの字幕が利用できます 作成済み字幕と生成字幕があります 生成された字幕はスパークルシンボルで マークされています 「Translated」という文字も 表示されます イタリア語の生成字幕を選択します
動画にイタリア語字幕が 表示されました
読みやすくするために スタイルを変更します まず Subtitlesメニューを開き Styleを選択します Large Textを試します 既存の字幕がプレースホルダーメッセージに 置き換えられました イタリア語で Large Textスタイルが 適用されています テキストが大きくなりましたが カスタムスタイルも試してみます
気に入りました
メニューを閉じます 字幕がカスタムスタイルで 表示されました 素晴らしい旅になりそうです 出発前に 次のステップをご紹介します 生成字幕機能についてご理解いただいたところで ぜひ実際に試してみてください 例えば 旅行動画を見て 生成字幕をオンにしてみてください
また アプリに字幕選択UIが あることを確認してください 字幕スタイルプレビューも実装してください このアクセシビリティ機能は 字幕スタイルを変更する必要がある時に 喜ばれます ご視聴ありがとうございました イタリア行きの飛行機に 乗らなければなりません Ciao ciao
-
-
7:43 - Implement subtitle style preview
// Implement subtitle style preview import AVFoundation import MediaAccessibility func updateProfileList() { subtitleStyleProfileIDs = MACaptionAppearanceCopyProfileIDs() as? [String] ?? [] } func showPreviewStyle(subtitleStyleProfileID: String) { playerLayer.setCaptionPreviewProfileID(subtitleStyleProfileID, position: .zero, text: nil) } func stopPreviewStyle() { playerLayer.stopShowingCaptionPreview() } func setSubtitleStyle(subtitleStyleProfileID: CFString) { MACaptionAppearanceSetActiveProfileID(subtitleStyleProfileID) }
-
-
- 0:00 - Introduction
Why people rely on subtitles for accessibility and comprehension, and what the session covers — how Apple's on-device AI-generated subtitles appear in your app, the subtitle style preview feature, and how media assets are authored.
- 1:10 - Media authoring
An overview of the traditional media authoring process, including how video, audio, and manually created subtitles are combined into the final media package.
- 2:14 - Subtitle generation methods
Discover the two use cases for on-device generated subtitles: speech transcription from source audio, and language translation from existing subtitles.
- 3:03 - Availability and support
The playback scenarios where generated subtitles work automatically — HTTP Live Streaming, video on demand, and file-based content — and the supported devices and languages, including English subtitles and translation into multiple languages.
- 4:31 - Presenting subtitles in your app
Explore options for providing a subtitle selection UI during video playback using AVPlayerViewController, AVPlayerView, and custom controls.
- 5:39 - Subtitle style preview
Explore how to implement a subtitle style preview using AVPlayerLayer and AVCaptionRenderer, allowing users to customize their viewing experience.
- 8:55 - Demo
A walkthrough of both features together — switching a camping video to generated Italian subtitles marked with a sparkle, then customizing the subtitle style for readability.
- 10:20 - Next steps
Review best practices for integrating generated subtitles and style previews into your app to improve accessibility.