💭

Whisper による音声認識の最先端〜8年越しのASR

2023/12/06に公開

シンプルフォーム CTO の小間 (@hkomachi) です。
本記事は SimpleForm Advent Calendar 2023 の6日目です。

今日は音声認識についてです。

背景

私は今から 9 年前の 2014 年頃に国産の自動音声認識 (ASR: Automatic speech recognition) アプリケーションの開発プロジェクトに携わっていました。当時は精度面でも速度面でも大きな苦難があったものですから、近年の認識精度・速度の急速な進化には大変驚いています。当時、一部の国産の音声認識モデルは、汎用的な用途では Google の SpeechRecognition になかなか勝てず、やむを得ず「話者の方言に対応する」「専門用語を認識できるようにする」といったように専門用途に特化する形で戦っていました。特に、ニッチな方言や専門用語のデータは一部の企業しか持っておらず、これらのデータを使ってモデルを専用用途にチューニングできることは確かに大きな強みでした。Google の SpeechRecognition に代表される当時の汎用モデルではチューニングが全くできなかったので、専門用語が頻出するような音声の文字起こし(会議の議事録など)では、この専門用途特化型の音声認識モデルを使ったアプリケーションが多くのビジネス機会を捉えていました。

さて、近年、言語モデルの領域では OpenAI の躍進が凄いですが、OpenAI からは Whisper という音声認識モデルも公開されています。Whisper は、方言には完璧に対応できないですが、なんとプロンプトを通じて専門用語を認識できるみたいなので、当時の国産モデル開発者の「専門用語のチューニングで戦う」という戦法がもしかしたらもう通用しないのかもしれません。今回はこの Whisper というモデルを使った実験とその活用方法について考えていこうと思います。

Whisper の概要

Whisper は、OpenAI が開発した汎用の音声認識モデルです。このモデルは、さまざまな音声の大規模なデータセットで訓練され、多言語音声認識や言語識別などの多くのタスクを実行できるモデルです。Whisper には OSS 版もあり以下の様々なモデルを使用することができます。モデルは Hugging Face で公開されています。

モデル一覧

他が凄すぎてあまり目立ってはいなかったですが、最新の whisper-large-v3 は先日(11月7日)の OpenAI DevDay で発表されたものです。早速、large-v3 を使ってみよう!と言いたいところですが、今回はサクッと動かしたいので OSS 版ではなく API 版を使用します。

GPT-3 や GPT-4 であれば任意のモデルを指定することができましたが、Whisper の API ではwhisper-1というモデル名のみ使用できます(2023年12月現在)。これは、上述の表で言う large-v2 モデルと対応しています。OpenAI の説明によると、API 版と OSS 版でモデルの性能の違いは無いとのことです。

使用方法

ここでは、シンプルフォーム社が公開しているポッドキャストで、私が話した回の音声を文字起こししてみます(私の回は12月13日に公開予定です)。

以下の様に、音声ファイル、モデル、レスポンスフォーマットを指定するだけで OK です。

from openai import OpenAI
client = OpenAI()

audio_file = open("koma-ep1.mp3", "rb")
transcript = client.audio.transcriptions.create(
  model="whisper-1", 
  file=audio_file, 
  response_format="text"
)

元ファイルは14分2秒あったのですが、認識は51秒で完了しました。
Colab

こんな感じで認識されました。

ママさんはこういうホットキャストとかラジオとか声の出演っていうのは初めてですか? この収録があるって聞いてビジネス系のYouTubeとかホットキャストとか聞き始めたんですけど みんな声いいじゃないですか? (中略)この番組はシンプルフォーム株式会社が提供するポッドキャストです シンプルフォームの目指す世界のこと 会社のこと 働く人など様々なテーマについて 毎回今のシンプルフォームのリアルな声をお届けしてまいります (中略)田代さんとの出会いは Tinderじゃない イエンタというですね Tinderみたいなビジネスの経営者同士が出会うとか 経営者とエンジニアが出会うとか ビジネスマッチングアプリのイエンタというもので 実は出会ったんですけれども…

専門用語の代わりとして固有名詞の「シンプルフォーム」「小間」「イエンタ」がどれだけ認識できるかがポイントです。冒頭こそ「小間さん」を「ママさん」と間違っていますが、その他は全て認識できています。本当はもっと認識できなくてプロンプトや言語モデルで補正する記事を書きたかったのですが…

と、いうことで音声に意図的にノイズを加え、音響的な聞き取りやすさを大きく毀損させてみました。音声に意図的にノイズを加える方法はこちらを参考にしました。

sox input.mp3 -p synth whitenoise vol 0.02 | sox -m input.mp3 - addednoise.mp3

マンガンはこういうホットキャストとかラジオとか声の出演っていうのは初めてですか? この収録があるって聞いてビジネス系のYouTubeとかホットキャストとか聞き始めたんですけど みんな声いいじゃないですか? (中略)この番組はシンプルホーム株式会社が提供するポッドキャストです シンプルホームの目指す世界のこと 会社のこと 働く人など様々なテーマについて 毎回今のシンプルフォームのリアルな声をお届けしてまいります (中略)田代さんとの出会いは Tinderじゃない エンタというですね Tinderみたいなビジネスの経営者同士が出会うとか 経営者とエンジニアが出会うとか ビジネスマッチングアプリのエンタというもので 実は出会ったんですけれども…

  • 「小間さん」が「マンガン」
  • 「シンプルフォーム」が「シンプルホーム」
  • 「イエンタ」が「エンタ」

といった誤認識をしています。

プロンプトを利用した精度改善

この状況に対して、プロンプトの機能を用いて誤認識の発生を抑制していく実験をします。

from openai import OpenAI
client = OpenAI()

audio_file = open("koma-ep1.mp3", "rb")
transcript = client.audio.transcriptions.create(
  model="whisper-1", 
  file=audio_file, 
  response_format="text",
  prompt="コマ ポッドキャスト シンプルフォーム イエンタ", 
)

ここで、

prompt="コマ ポッドキャスト シンプルフォーム イエンタ"

といった要領で、専門用語を羅列する形で与えます。 「小間」は読みが伝わるか怪しかったため「コマ」としました。これだけで未知語を認識できるようになります。

認識結果

コマさんはこういうポッドキャストとかラジオとか声の出演っていうのは初めてですか? この収録があるって聞いてビジネス系のYouTubeとかポッドキャストとか聞き始めたんですけど みんな声いいじゃないですか? (中略)この番組はシンプルフォーム株式会社が提供するポッドキャストです シンプルフォームの目指す世界のこと 会社のこと 働く人など様々なテーマについて 毎回今のシンプルフォームのリアルな声をお届けしてまいります (中略)田代さんとの出会いは Tinderじゃない エンタというですね Tinderみたいなビジネスの経営者同士が出会うとか 経営者とエンジニアが出会うとか ビジネスマッチングアプリのイエンタというもので 実は出会ったんですけれども…

いずれの語も正しく認識されました。

このようにプロンプトで専門用語や固有名詞を与えることで大きく精度が向上するのですが、 2023年12月6日現在、Whisper のプロンプトは 224 トークンしか受け付けることができず、より多くの語が登場する長い音声にも同様に高い効果を発揮できるとは限りません。また、前回の AI-OCR の記事で行ったように、音声認識後の文字列に対し GPT-4 で誤認識を修正するタスクを実行するという方法もあります。

活用可能性

当社のメインプロダクトである「SimpleCheck」というサービスは、法人名をインプットするだけで、その法人に関する情報がインターネットから瞬時に収集され、当社が独自に蓄積・検知したリスク情報と共に 30 秒でレポーティングするというものです。主に金融機関のお客様にご利用いただいています。

私たちは法人について、より多くの、より深い情報を集めることが求められるのですが、今後、情報を収集する過程で、電話応対の音声を自動認識するという活用可能性が考えられます。

今後、音声合成技術が発達し、人間と区別の付かないほどの機械音声を作ることができると、金融機関における音声を伴ういくつかの業務フロー(審査の際に電話をかけるなど)が自動化できる可能性があります。たとえば、顧客管理規定上、リスクが認められる数千社に電話をかけねばならないケースで、合成音声+音声認識を組み合わせ、人間だと数日かかるような架電業務を並列で数分で完了できるかもしれません(そのような時代になったらもはや電話で確認することに意味がなくなるかもしれませんが…笑)。

おわりに

専門用語・固有名詞をチューニングできる音声認識モデルはもう誰でも使える時代になりました。チューニングには制限があるものの、一度プロンプト無しで認識した結果を見てプロンプトを構築して再認識をかけたり、音声認識前にその音声で語られているトピックが十分にわかっている場合はそのトピックからプロンプトを考えたりすることで、十分実用に足るものが作れるようになります。画像生成や動画生成の領域では毎週革新的なアップデートが起きている昨今ですので、音声合成の大幅な進化にも期待です。

シンプルフォームでは新しい技術開発にスピーディに挑戦し続けています。いつでも積極採用中ですので、少しでも興味を持っていただいた方は、ぜひカジュアルにお話しさせてください!

シンプルフォーム株式会社 の全ての求人一覧

SimpleForm採用お問い合わせフォーム

SimpleFormカジュアル面談お申込みフォーム

Discussion