Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ライブ配信サービスのための自動字幕起こし機能の実装と課題解決

Chuy
August 24, 2024
120

 ライブ配信サービスのための自動字幕起こし機能の実装と課題解決

SFSpeechRecognizerは音声認識を利用して音声をテキストに変換することができます。

アバター作成・ライブ配信などを楽しめるスマートフォン向けメタバース「REALITY」のiOSアプリでは、
この技術を活用して、視聴者のデバイス上で完結する自動字幕起こし機能を実装しました。
本セッションでは、その過程で直面した課題とその解決方法について共有したいと思います。

紹介トピック

- 自動字幕起こし機能の概要
- SFSpeechRecognizerの実装方法とその制限
- デバイス上で処理できる言語の条件

-----
本スライドは、iOSDC 2024 LTトークで使用したスライドを微調整したものです。
https://fortee.jp/iosdc-japan-2024/proposal/304e58f1-1af9-42a4-8e06-bacd3944b683

Chuy

August 24, 2024
Tweet

Transcript

  1. 字幕起こし方法 6 • 次に音声認識リクエストを作る // 音声認識リクエストを作る var speechRecognitionRequest: SFSpeechAudioBufferRecognitionRequest =

    { let request = SFSpeechAudioBufferRecognitionRequest() request.shouldReportPartialResults = true // 途中からでもすぐ音声認識の結果を返す return request }()
  2. 字幕起こし方法 7 • 音声認識を開始して、結果を表示する // 音声認識を開始 speechRecognizer.recognitionTask(with: speechRecognitionRequest) { result,

    error in if let result { // 音声認識ができたので、字幕として画面に表示 print(result.bestTranscription.formattedString) } else if let error { // エラーハンドリング } }
  3. 字幕起こし方法 8 • 音声認識リクエストに、リアルタイム音声を流し込む func setup(audioBuffer: Signal<AVAudioPCMBuffer>) { audioBuffer .emit

    { [weak self] buffer in // リアルタイム音声を音声認識リクエストに流す self?.speechRecognitionRequest?.append(buffer) } .disposed(by: disposeBag) }
  4. // 音声認識リクエストを作る var speechRecognitionRequest: SFSpeechAudioBufferRecognitionRequest = { let request =

    SFSpeechAudioBufferRecognitionRequest() request.requiresOnDeviceRecognition = true // 端末内で処理させる request.shouldReportPartialResults = true // 途中からでもすぐ音声認識の結果を返す return request }() 制限の回避 11 • デバイス上の処理で音声認識をするように設定する