見出し画像

音声→テキスト変換 Wisperを使ってみた

音声からテキストに変換するAIを探しています。
まずは、生成AIといえばOpenAI社と思い、同社の音声テキスト変換AI「Wisper」を試してみました。


Wisperの特徴

多言語対応

100以上の言語に対応しています。

認識精度

ノイズなどが入った場合にも強い

リアルタイム速度

遅い

プライバシー

プログラムが公開されているため、ネットがなくても動作する環境を作ろうと思えば作れる

トレーニングデータ

ネット上の大規模データセット

利用コスト

無料

無料というのがやや気になりますが、無難に利用できそうな音声テキスト変換ではないでしょうか。
※有償の方が質が良いのではと思うお年頃です。

Wisperの準備

まずは、Wisperの性能を確かめるために、手っ取り早くOpenAIへ接続し、公開されているサービスを利用することにしました。

インターネット上のサービスを利用するには、

  • 公開されているWebシステムのユーザーインターフェイス(ユーザー操作)を用いる

  • 公開されているAPIを用いてシステムへ接続する

大きく分けると上記2パターンがあります。

Wisperは、公開されているユーザー操作可能なサイトがない為、2番目のAPIを用いた接続で利用することになります。

そうなると、Pythonというプログラム言語が、ものすごく楽をできますので、今回もPythonでチャレンジしてみたいと思います。

Pythonのインストールは、ネット上にたくさん情報がありますので、割愛します。

Python環境へのモジュールインストール

まずはopenaiのモジュールをインストールしましょう。

コマンドラインで

pip install openai

とするだけです。

APIで利用するためのプログラムの準備

Pythonは、プログラムを書いたテキストファイル(拡張子はpy)と同じフォルダに「.env」という名前のテキストファイルがあると環境定義できる仕様となっているので、「.env」というファイルを作成し、OpenAiのAPIKeyを定義しました。

.envファイルの内容(PythonはUTF-8文字コードのみ対応ですので保存するときに気を付けましょう)

OPENAI_API_KEY="sk-あなたご自身のOpenAIのAPIキー"

次にプログラムコードです。

次のようにしました。(Wisper_test.py)

import openai
import os

from dotenv import load_dotenv
from openai import OpenAI

load_dotenv()

openai.api_key = os.environ["OPENAI_API_KEY"]
client = OpenAI()

audio_file = open("./wav2-1.wav", "rb")
transcript = client.audio.transcriptions.create( model="whisper-1", file=audio_file, response_format="vtt" )

with open("output.vtt", "w", encoding="utf-8") as file:
    file.write(transcript)

プログラムと同じフォルダに「wav2-1.wav」(←音声聞けます)ファイルを置き、

コマンドプロンプトで

py Wisper_test.py

と、実行してみました。

得られた結果は!?すごい賢い!驚きです!100点まで持っていけました!

得られた結果は次の通り。(プログラム内でoutput.vttファイルへ出力するようにしている)

WEBVTT

00:00:00.000 --> 00:00:07.000
AI の進化は非常に速いペースで進んでいる分野です

00:00:07.000 --> 00:00:14.000
大きく分けると、まずは初期の段階ではルールに基づくプログラムでAIを作っておりました

00:00:14.000 --> 00:00:20.000
これはルールベースのAIと呼ばれ、あらかじめ人が決められたルールで機械が動作します

00:00:20.000 --> 00:00:29.000
例えば、1950年にチェスのプロに勝ったAIがあるんですけれども、あのようなプログラムがこれに当たります

00:00:30.000 --> 00:00:39.000
次に、1990年、2000年にかけてデータからパターンを学ぶ機械学習が登場します

00:00:39.000 --> 00:00:49.000
ここで、AIは大量のデータを分析し、自動でパターンを学び取り、それに基づき判断を下すようになりました

00:00:49.000 --> 00:01:00.000
例えば、手書き文字をOCRで読み込む機能とか、スパムメールをフリタリングするなどがこれに当たります

00:01:00.000 --> 00:01:07.000
さらに、2010年代に入ると、真相学習というものが登場します

00:01:07.000 --> 00:01:17.000
AIはこれにより、画像認識、自然言語処理、音声認識など、さらに複雑なタスクをこなせるようになりました

00:01:17.000 --> 00:01:23.000
人間の脳を真似した多層のネットワークを使用しております

00:01:23.000 --> 00:01:33.000
具体的な例だと、Googleの画像検索や自動翻訳、音声アシスタントなどがそれに当たります

00:01:33.000 --> 00:01:45.000
これらの進化は、チップの性能構造やデータの蓄積、アルゴリズムの革新などが要因して成り立ってきております

output.vtt

まあ、ほぼ正解ですね。テキストの部分だけ集めると

AI の進化は非常に速いペースで進んでいる分野です。
大きく分けると、まずは初期の段階ではルールに基づくプログラムでAIを作っておりました。これはルールベースのAIと呼ばれ、あらかじめ人が決められたルールで機械が動作します。
例えば、1950年にチェスのプロに勝ったAIがあるんですけれども、あのようなプログラムがこれに当たります。
次に、1990年、2000年にかけてデータからパターンを学ぶ機械学習が登場します。
ここで、AIは大量のデータを分析し、自動でパターンを学び取り、それに基づき判断を下すようになりました。
例えば、手書き文字をOCRで読み込む機能とか、スパムメールをフリタリングするなどがこれに当たります。
さらに、2010年代に入ると、真相学習というものが登場します。
AIはこれにより、画像認識、自然言語処理、音声認識など、さらに複雑なタスクをこなせるようになりました。人間の脳を真似した多層のネットワークを使用しております。具体的な例だと、Googleの画像検索や自動翻訳、音声アシスタントなどがそれに当たります。
これらの進化は、チップの性能構造やデータの蓄積、アルゴリズムの革新などが要因して成り立ってきております。

output.vttの文章部分のみ抜粋

となります。なかなかの出来です。でも、85点ですね。ギリギリ「優」というところでしょうか。

GPT4oにお手伝いをお願い

一部、誤字脱字がありますので、修正したいところですね。
そこで、GPT4oに見てもらいました。

見てもらうためのプロンプト

次の文章のうち、誤字脱字または変換ミスがある箇所が何か所もあります。 文章の内容を加味して、その流れから修正してください。
###
[出力された文章をコピペ]

讃良屋 考案のプロンプト

修正してきた文章が次の通りです。

AI の進化は非常に速いペースで進んでいる分野です。大きく分けると、まず初期の段階ではルールに基づくプログラムで AI を作っておりました。これはルールベースの AI と呼ばれ、あらかじめ人が決めたルールで機械が動作します。例えば、1950 年にチェスのプロに勝った AI があるんですけれども、あのようなプログラムがこれに当たります。次に、1990 年から 2000 年にかけてデータからパターンを学ぶ機械学習が登場します。ここで、AI は大量のデータを分析し、自動でパターンを学び取り、それに基づき判断を下すようになりました。例えば、手書き文字を OCR で読み込む機能や、スパムメールをフィルタリングするなどがこれに当たります。さらに、2010 年代に入ると、深層学習というものが登場します。AI はこれにより、画像認識、自然言語処理、音声認識など、さらに複雑なタスクをこなせるようになりました。人間の脳を模倣した多層のネットワークを使用しております。具体的な例だと、Google の画像検索や自動翻訳、音声アシスタントなどがそれに当たります。これらの進化は、チップの性能向上やデータの蓄積、アルゴリズムの革新などが要因となって成り立ってきております。

GPT4oが修正した文章

完ぺきです。どこを修正したのかをGPT4oに聞いたところ、

修正した箇所:
「まずは初期の段階では」→「まず初期の段階では」
「人が決められたルール」→「人が決めたルール」
「1990年、2000年にかけて」→「1990年から2000年にかけて」
「スパムメールをフリタリングする」→「スパムメールをフィルタリングする」
「真相学習」→「深層学習」
「人間の脳を真似した」→「人間の脳を模倣した」
「チップの性能構造や」→「チップの性能向上や」
「要因して」→「要因となって」
以上が修正箇所となります。

GPT4oの修正箇所の報告

だそうです。私が話している言葉で、聞き取りづらいところや、話し言葉なので日本語がおかしいところまでも修正してくれました。ありがたい。

まとめ

Wisperは、それだけでも高性能ですが、そこから出力された文章を、さらに同じOpenAI社のGPT4oに修正してもらうことによって、精度の高いテキストとなることがわかりました。

なかなか使えそうなWisperですね。

心配なのは、まだまだ進化途中のため、コロコロとAPI仕様が変更になるのではないかという恐れです。

これを使って、サブスクサービスを作るぞ!

作ってほしいサービス御座いましたら、ご連絡ください!


讃良屋安明公式ブログあります。お時間のある時に覗いてみてください。


会社のサイトはこちら


いいなと思ったら応援しよう!