0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

gpt-4o-transcribe-diarize を使って話者分離

Posted at

こちらに書いた記事をQiitaにも書き記しておきます。
https://zenn.dev/buno15/articles/7631de0ea967bf

想定読者

AIを使用して文字起こし・話者分離をしたい方

背景

業務で音声データの文字起こし・話者分離を実装することになり技術選定を行っています。そんな中つい先日使用可能になった、gpt-4o-transcribe-diarizeモデルを見つけたため、それについて説明します。

gpt-4o-transcribe-diarize とは

OpenAIが提供するテキスト文字起こしモデルです。既存のモデルとしてgpt-4o-transcribeがありますが、このdiarizeモデルは話者分離を行えることが特徴です。単に音声データをテキスト文字起こしするだけでなく、誰がいつ喋ったかを分類しjsonで出力してくれます。

話者サンプル

最大4人の話者が単独で話しているサンプル音声データと個人名をモデルに提供することで、高い精度で話者分離が可能になります。加えて文字起こしの際に、個人名でラベルを付与できることも特徴です。
サンプルを指定するにはAPIリクエストパラメータに以下の値を追加します。

extra_body={
    "known_speaker_names": ["ラベル"],
    "known_speaker_references": ["音声ファイル"],
}

感想

今回は試しに6人の人間が会話しているデータを文字起こし・話者分離してみました。OpenAIのAPIではリクエストできるファイルサイズが最大25MBであったので、分割してリクエストする必要がありました。公式ドキュメントのサンプルコードを参考にしました。
https://platform.openai.com/docs/guides/speech-to-text?lang=python#speaker-diarization

話者分離の精度

音声サンプル人数 >= 会話内の人数 の方が話者分離の精度が高い印象でした。音声サンプル人数が少ないと、例えばAさん(サンプルなし)の話している内容がBさん(サンプルあり)として判定されてしまいました。

チャンク分離の対策

話者分離可能な最大人数が4人であるため、4人以上の人間が会話しているデータについては、チャンク分けを考えて行う必要があります。チャンク内で会話している人数が4人以下になるように、会話データを分割する必要があります。

参照

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?