Open5

Whisper関連:文字起こし技術リサーチメモ(ASR / STT)

AIエンジニアの備忘録AIエンジニアの備忘録

Whisper 関連の GitHub Repository まとめ

OpenAI Whisper 登場により、文字起こし関連技術が飛躍的に進化したような印象があるが、Whisper 関連技術にはどのようなものがあるか。

  • OpenAI 公式 Whisper
  • whisper.cpp
    • c, c++ ベースの Whisper: リアルタイムストリーミングも可能
  • Buzz
    • デスクトップで利用可能な Whisper アプリ: Available on Mac, Windows, and Linux
    • brew install --cask buzz で install 可能
  • Faster Whisper
    • 最適化されていて最大4倍ほど高速
    • CTranslate2 を利用して Transform 関連の処理を最適化している様子
  • pyannote.audio
    • 話者分離 (Neural speaker diarization)
  • WhisperX
    • Whisper と関連ライブラリを組み合わせたような感じ
    • faster-whisper, pyannote-audio, wav2vec2 などで強化
  • yt-whisper
    • YouTube URL を指定して自動で字幕取得
    • 個人利用レベルのサポートツール

参考
ASR: Automatic Speech Recognition
STT: Speech To Text

AIエンジニアの備忘録AIエンジニアの備忘録

ASR/STT 技術の活用方法や活用事例

ChatGPT 4.0 を利用しながら、Whisper 技術を利用してどのようなことができるかを改めて考える。

  • 文字起こしサービス
  • 音声翻訳
  • 商談分析、セールスサポート
  • IoT制御
  • 医療補助(音声で医者のサポート)
  • 音声アシスタント(Alexa, Google Home, Siri など)
  • 教育サポート、板書作成(note taking)や発話によるレポート作成
  • 音声検索
  • コンテンツ生成:ブログ、SNSコンテンツ、書籍
  • アーカイブ用コンテンツの自動生成

ASR/STT の技術はこれまであまり脚光を浴びてこなかったかもしれないが、AI技術の革命によって、新しい道が開け始めているかもしれない。上記のサービスはどれも容易に想像可能だが、実際に毎日利用されているような安定したサービスはまだほとんど存在していないと言って良さそう。

技術的な困難さはまだまだあるが、将来的には大きな市場になりそう。

ASR/STTの技術的・言語的な困難性、解決が必要な課題

技術的な課題

  • 背景雑音
  • 話者分離
  • 発話区間の被り

言語的な課題

  • 複数言語の対応
  • アクセントや方言
  • 同音異義語問題
  • 流行語やスラングなど
  • 前後文脈の理解(現状ではほとんど 音=>テキスト の変換に終始している認識)
AIエンジニアの備忘録AIエンジニアの備忘録

Speaker Diarization: 話者分離について

Whisper 界隈では、Speaker Diarization といえば pyannote-audio というような風潮があるような気がする。Speaker Diarization に対する2023年6月現在の技術レベルとベストプラクティスについて明確にしたい。

https://github.com/pyannote/pyannote-audio

調査の目的

  1. Speaker Diarization の基本的な技術理解
  2. pyannote-audio について
  3. 他のオープンソースやサービス

最初に結論だけ

pyannote-audio は2022年に開催された Speaker Diarization 系のコンペで優勝などしていた。ということで、pyannote-audio がオープンソースでのデファクトスタンダートという理解で間違いなさそう。

Adapting pyannote.audio 2.1 pretrained speaker diarization pipeline to your own data

Speaker Diarization の基礎的な技術理解

そもそも、話者分離を実現するためには、どのような処理が必要か。

  1. Preprocessing: ノイズ除去など
  2. Voice Activity Detection (VAD): 発話区間の特定
  3. Feature Extraction: MFCCなどを利用した特徴量抽出
  4. Segmentation: オーディオデータ全体を意味のある単位に分割する
  5. Clustering: Segmentation の結果をもとにクラスタリングを実施し、話者をグルーピングする
    BIC (Bayesian Information Criterion), agglomerative hierarchical clustering, Gaussian Mixture Models (GMM) など
  6. Re-segmentation: 5の Clustering の結果を元にして、再度 Segmentation を行う
    Hidden Markov Models (HMM) など
  7. Evaluatio: 精度の評価をする
    Diarization Error Rate (DER)

pyannote-audio の特徴など

Speaker Segmentation と Speaker Diarization の違いは?

pyannote-audio は2種類別でモデルを公開しているが違いは何か?詳細な情報は以下の記事がわかりやすい。
https://herve.niderb.fr/fastpages/2022/10/23/One-speaker-segmentation-model-to-rule-them-all

技術的な説明としては、Spekaer Diarization は内部的に Speaker Segmentation のモデルを利用しているとのこと。Speaker Segmentation だけだと、部分的なセグメントはできるが、音声全体での話者の特定がうまくいかないケースがあったということ。そこで改良されたバージョンが Speaker Diarization と考えるとわかりやすいかもしれない。

Diarization に関する他のオープンソースやサービス

オープンソースはあまり多くなさそうだった。

参考ページ

https://wq2012.github.io/awesome-diarization/
https://herve.niderb.fr/fastpages/

AIエンジニアの備忘録AIエンジニアの備忘録

pyannote-audio のファインチューニングに関する Zenn Scrap まとめを見つけた。

https://zenn.dev/ihsinoky/scraps/21b78a7271f8d3

  • pretrained model の日本語での認識精度がどの程度か
  • 日本語のデータセットを作成して(あるいはもし存在するのであれば探してきて)ファインチューニングすることでどの程度まで改善するか

以上については気になるところ。