Google Cloud Speech-to-Text とは
Cloud Speech-to-Text – 音声認識 | Cloud Speech-to-Text API | Google Cloud
- Google のすごい音声認識 API
(2018/10/30 現在) 日本語に対応していないが、下記のような機能も存在。
- 句読点入力の自動化 (すごい)
- 複数話者の認識、識別 (すごい)
API の種類
- 同期音声認識 API: 60 秒未満の音声ファイルを扱う場合
- 非同期音声認識 API: 60 秒以上の長い音声ファイルを扱う場合
- ストリーミング音声認識 API: マイク等で拾った音声をリアルタイムに変換する場合
3. は REST API じゃなくて、巷で話題の gRPC を使用した API。 しかし、公式クライアントライブラリを使えば、特に意識すべき点はない。
ストリーミング音声認識 API を使ってみた
Node.js (v10.9.0) on OS X (El Capitan) でやってみた。
ちなみに、同期音声認識の API はここのデモですぐ試せる。
API の有効化
ドキュメントに存在する ENABLE THE API
ボタンを押下して画面の指示に従う。
以下が行われるはず。
- Cloud Speech API 有効化
- サービス アカウント作成
必要なものをインストール
homebrew で SoX をインストール。
brew install sox
npm install @google-cloud/speech npm install node-record-lpcm16
コード
- 無音部分を API へ垂れ流さないようにパラメータ調整
threshold: 0.5
、silence = 1.0
など- さもなくば、
Error: Audio data is being streamed too slow. Please stream audio data approximately at real time.
などと怒られるので
- API の制限によりタイムアウトとなってしまうので、最大 60 秒で雑に一旦録音を打ち切り
- 無音区間の検知後にプログラムが終了してしまうので、無限ループ化
特に 3. に関しては、SoX
(マイク等からの音声録音を担当) の子プロセスごと無理やり起動し直しているので、プロセス再起動中の音声を取りこぼしてしまうことがある。
また、ニュースのように 60 秒以上ほぼ喋り続けているような音声を変換する場合、 2. の録音打ち切りのため、やはり取りこぼしの生じる場合がある。
したがって、もっと丁寧に対応しないと使い物にならないと思われる。
文字起こし例1
macOS でお馴染みの say
コマンド。
say -v kyoko "こんにちは、私の名前はKyokoです。日本語の音声をお届けします。"
Expected
こんにちは、私の名前はKyokoです。日本語の音声をお届けします。
Actual
完璧。
こんにちは私の名前は恭子です日本語の音声をお届けします
文字起こし例2
ニュース動画。 うまくいった例。
Expected
大阪メトロの地下鉄の駅がお化け屋敷のように様変わりするハロウィンイベントが行われました。
ゾンビ襲撃に乗客パニック 大阪メトロでハロウィンイベント 地下鉄構内がお化け屋敷に(ABCテレビ) – Yahoo!ニュース
Actual
大阪メトロの地下鉄の駅がお化け屋敷のように様変わりするハロウィンイベントが行われました
文字起こし例3
同じくニュース動画。 引用の要件的に、長々と貼るわけにもいかないので結果はお察しください……
Expected
また、首都ローマの近郊では倒木が車を直撃し中にいた2人が死亡するなどーー
ベネチア4分の3が冠水 10年ぶり水位に(日本テレビ系(NNN)) – Yahoo!ニュース
Actual
またちょっとローマの近郊では倒木が車を直撃し中にいた2人が死亡するなどーー