WhisperAPI - YUKAI/codama-doc-r0 GitHub Wiki

録音した音声をテキストに変換する

音声で様々な操作ができるように、録音した音声をテキストに変換しましょう。

今回は、OpenAIのWhisperという音声認識モデルのAPIを使用します。このWhisper APIでは、音声ファイルを送信するとテキストデータが返ってきます。

日本語の文字起こしの精度は、「単語誤り率」の順位で6位の「5.3%」となっており、他の言語に比べても高い精度で文字起こしが可能と発表されています。(引用:Whisper Github

1. OpenAI Platformのアカウントを作成

APIを使用するために、まずはOpenAI Platformの公式サイトでアカウントを新規作成します。

アカウントの作成方法については、こちらのページで画像付きで詳しく書かれているので、参考にしてください。

2. OpenAIのAPIキーを取得

OpenAI Platformにログインできたら、自分のアイコンをクリックし、「View API keys」をクリックします。

「API keys」の画面で「+Create new secret key」をクリックし、表示されているAPIキーをコピーします。

プログラムを実行するときにこのAPIキーが必要になるので、 codama-doc-r0/examples/.envファイルにコピーしたAPIキーを記入しておきます。

OPEN_AI_API_KEY = "YOUR_OPEN_AI_API_KEY"

3. プログラムの作成

以下のpythonプログラムをcodama-doc-r0/examplesディレクトリ内にspeech2text.pyという名前で保存します。

import openai
import sounddevice as sd
from scipy.io.wavfile import write
import os
from dotenv import load_dotenv

# 録音の設定
SAMPLE_RATE = 16000     # サンプリングレート
DURATION = 3            # 録音時間(秒)
CHANNELS = 1            # モノラル

# 録音ファイルのパス
REC_FILE = 'sound/recorded.wav'

# OpenAIのAPIキーを設定
load_dotenv('.env') 
openai.api_key = os.environ.get("OPEN_AI_API_KEY")

# 録音実行
print('Recording...')
recording = sd.rec(int(DURATION * SAMPLE_RATE), samplerate=SAMPLE_RATE, channels=CHANNELS)
sd.wait()
print('Recording stop')

# wavファイルに保存
write(REC_FILE, SAMPLE_RATE, recording)

audio_file= open(REC_FILE, "rb")

# Whisper APIでテキストに変換
transcript = openai.Audio.transcribe("whisper-1", audio_file)
print(transcript.text)

4. プログラムの実行

speech2text.pyを実行すると、3秒間録音し、その音声データがテキストに変換されて出力されます。

$ python speech2text.py

これでcodamaの基本的な使い方を習得できたので、次はオリジナルのスマートスピーカーを作るに進みましょう。