PythonでReazonSpeechを使ってみる(音声認識)

はじめに

 以前VOICEVOX COREを使った音声合成を試してみました。今回は音声認識です。

 音声認識だとOpen AIのWhisperや、以前使ったGoogleのSpeech to Textも選択肢としてありますが、お金がかかります。そんな中、日本語用に公開されているReazonSpeechを見つけたので使ってみました。

▼商用利用可能として紹介されていますが、ライセンスはご確認ください。

https://research.reazon.jp/news/reazonspeech.html

▼ブラウザ上でも試すことができます。

https://research.reazon.jp/projects/ReazonSpeech/index.html

 毎度のことながら、環境構築が一番大変だったりします。Hugging Faceを利用するのがはじめてなので、少し戸惑いました。

▼以前の記事はこちら

PythonでVOICEVOX COREを使ってみる(音声合成)

はじめに  以前の記事でGoogle Cloud Platformの音声合成・音声認識を試したのですが、利用回数が多いとお金がかかります。やっぱり無料で実行したいということで、今回…

Text-to-Speech API / Speech-to-Text APIを使ってみる(Google Cloud Platform)

はじめに  今回はGCP(Google Cloud Platform)のText-to-Speech APIとSpeech-to-Text APIを使ってみました。以下にまとめるように、音声系のAPIですね。  これを使 [&hel…

環境を構築する

 今回はWindows環境で実行しています。

概要

▼ReazonSpeechのクイックスタートはこちら。

https://research.reazon.jp/projects/ReazonSpeech/quickstart.html

▼How toはこちら。こちらには日本語音声コーパスにPythonでアクセスする方法について書かれています。

https://research.reazon.jp/projects/ReazonSpeech/howto.html

 コーパス(corpus)は簡単に言うと、自然言語処理用のデータベースです。音声認識を行うだけなら、アクセスすることはないかもしれません。

▼こちらの記事も参考になりました。

https://qiita.com/e_e99/items/7f70bdfca3ce9a02d9cd

 データセットは、GitHubに似た機械学習向けのHugging Faceで公開されています。

▼Hugging Faceのクイックスタートはこちら

https://huggingface.co/docs/huggingface_hub/quick-start

Pythonの仮想環境を用意する

 機械学習関係の勉強をしていると、Pythonの仮想環境を用意することが多いように思います。パッケージの依存関係を環境ごとに切り替えることができるので便利です。

 環境構築をするたびにバージョンの違いで悩まされた経験が無いと、馴染みがないかもしれません。

▼venvでreazonフォルダに仮想環境を作成し、Scriptsフォルダのactivateファイルを実行することで、仮想環境が有効になります。

 以降、仮想環境内でコマンドを実行します。

ReazonSpeechのインストール

 pipでインストールします。コーパスにアクセスしないのであれば、これだけでOKです。

Hugging Faceの準備

※日本語音声コーパスにアクセスする場合は必要になります。

 まずはHugging Faceのアカウントを作成してください。SettingsのAccess Tokensから発行できるトークンが必要になります。

▼このトークンは後で使用します。

 また、今回使用するreazonspeechのデータセットがあるページで、リポジトリにアクセスするために同意する必要があります。

▼Hugging Faceでのページはこちら。

https://huggingface.co/datasets/reazon-research/reazonspeech

▼これを設定していない場合、アクセスする権限がないというエラーが出ました。

 ターミナルでhuggingface_hubをインストールし、ログインします。コピーしたトークンは、右クリックでペーストできます。

▼コマンドの実行後、Access Tokenを聞かれます。

▼nだと以下のエラーが出ました。

音声ファイルからテキストを抽出する

reazonspeechを実行する

 クイックスタートの記事にspeech-001.wavがあります。まずはこの音声ファイルからテキストを抽出してみました。

▼speech-001.wavを読み込む場合のコマンドはこちら。初回は特に時間がかかるかもしれません

 実行後、一分ぐらい経ってからテキストが出力されました。結構時間がかかりますね。私のノートパソコンのCPUがほぼ100%使われているような状態だったので、実行環境によって変わると思います。

▼コンソールでの表示はこちら

▼前回の記事で環境を構築したVOICEVOX COREの音声ファイルを読み込ませてみました。これで出力に13秒ぐらいかかりました。

ストリーム処理を行う

 ストリーム処理ができるとのことだったので、ソースコードを読んでみました。

▼APIリファレンスはこちら

https://research.reazon.jp/projects/ReazonSpeech/api.html

▼ソースコードはこちら

https://github.com/reazon-research/ReazonSpeech

 interface.pyにあるTranscribeConfigクラスのwindowの値で、音声処理のウィンドウの長さが決められています。デフォルトでは320000 (20秒)です。この数値を変えられるようにしてみました。

▼プログラムはこちら

import reazonspeech as rs

config = rs.interface.TranscribeConfig()
config.window = 32000

for caption in rs.transcribe("speech-001.wav", config=config):
    print(caption)

▼config.window = 3200の場合はこんな感じ。短すぎて、何を言っているのか分からない状態です。

▼config.window = 32000の場合はこんな感じ。大体あっています。ちょっとずつ出力されました。

日本語音声コーパスにアクセスする場合

 音声コーパスはsmall版で350MB、all版で1.3TBもあるみたいです。

▼必要なパッケージをインストールします。

▼データセットを読み込むときのプログラムはこんな感じ

from datasets import load_dataset
ds = load_dataset("reazon-research/reazonspeech")

ds["train"]

print(ds["train"][2000])

▼コンソールでの表示はこちら(パスは削除し、一部改行しています。)

▼FutureWarningが出ているのが気になりました。読み込めてはいるようです。

最後に

 実行してみて、認識するまでに時間がかかるように感じました。データセットが巨大ですし、ノートパソコンで実行するとそうなるのかな?という印象です。

▼認識時間については、比較している記事を見つけました。結構かかるんですね。

https://dev.classmethod.jp/articles/reazon-speech-transcribe-meeting/

 ストリーム処理ができるので、使い方次第かもしれません。音声合成、音声認識ができたので、次は質問応答を試したいところです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です