コールセンターのスーパーバイザが複数のオペレータの音声をモニタリング … •価格:各APIをアプリケーションに組み込む価格を調べました。 ** コンテンツを 5 分以上ストリーミングする必要がある場合は、エンドレス ストリーミングのチュートリアルをご覧ください。, StreamingRecognizeリクエストの場合、ほぼリアルタイムのレートで音声を送信する必要があります。, 任意のリクエスト内で、そのリクエストに固有のフレーズのリストを含む SpeechContext リソースを一緒に指定できます(このコンテキストでは 1 つの単語が 1 フレーズとしてカウントされます)。このようなコンテキストには次の上限が適用されます。, Speech-to-Text に対する API の現在の使用量上限は次のとおりです(変更されることがあります)。, * 各 StreamingRecognize セッションは、ストリーム内に StreamingRecognizeRequest 音声の複数フレームが含まれる場合でも、1 つのリクエストと見なされます。, これらの上限は各 Speech-to-Text デベロッパー プロジェクトに適用され、そのデベロッパー プロジェクトを使用するすべてのアプリケーションと IP アドレスで共有されます。. © 2020 Rakuten RapidAPI.

音声はキーボード、マウスに続く入力インタフェースとして注目されています。スマートフォンにはSiriやGoogle Assistantといったボイスアシスタント機能が組み込まれていますが、自分で開発するアプリから自由に使える訳ではありません。, そこで今回はGoogleが提供している音声認識APIであるGoogle Cloud Speech APIを使ってMonacaアプリで音声認識を実現してみたいと思います。, 今回作るアプリではマイクを使って録音し、そのデータを音声認識APIに渡します。デバイスやOSのバージョン、使用するアプリの種類によって録音データの音声フォーマットや周波数が異なるため、検証環境を以下に示します。異なる環境では後述する「ファイル読み込み完了時の処理」の変更が必要になる場合があります。, Google Cloud Speech APIは音声認識技術をAPI化したものです。音声ファイルをアップロードすると、各国語のテキストに変換してくれます。もちろん日本語にも対応しています。例えば適当な音声をAPIに投げると、次のようなレスポンスが返ってきます。keyは後述する管理画面で取得できるキーに書き換えます。, 見て分かりますが、テキストに変換されたtranscriptが返ってきます。confidenceは信頼性を表し、1に近いほど認識精度の高いデータと言うことになります。プライベートAPIとして公開されているGoogle Speech APIの場合、このalternativesが複数返却され、信頼性がそれぞれ異なります。Google Cloud Speech APIの場合は筆者が試した限りでは常に一つしか返ってこないので、気にする必要はなさそうです。, Google Cloud Speech APIを設定するにはGoogle Cloud Platformにてプロジェクトを作成し、Google Cloud Speech APIを有効にします。, その後Credentialsへ移動してAPI Keyを作成します。必要に応じてアクセス制限を設けてください。, 今回はOnsen UI V2 JS Minimumをベースにします。プロジェクトを作ったら、Cordovaプラグインとしてcordova-plugin-media-captureをインストールします。これはアプリでマイクを使った音声キャプチャを実現するためのプラグインです。, また、Ajaxを実行する関係上、JS/CSSコンポーネントの追加と削除よりjQueryをインストールしておきます。, 今回のHTMLは次のようになります。キャプチャした音声をそのまま聴けるように audio タグを追加しています。, 実際の画面は次のようになります。ボタンを押してキャプチャしたら、テキストエリアに結果が返ってくるようにします。, 一つ目の引数が処理成功時のコールバック、次が失敗時のコールバック、最後はキャプチャ設定です。Google Cloud Speech APIには、音声ファイルの長さは1分までという制限があります。あまり長いデータは処理に時間がかかりますので注意してください。, 次にキャプチャ完了後の処理を行うappオブジェクトを定義します。全体像は次のようになります。, キャプチャが成功したら、FileReaderを使って音声ファイルを読み込みます。今回は audio タグに対してパスを設定することで、その場で再生できるようにしてあります。, FileReader の readAsDataURL() で読み込むと app.load_file がコールバックされ、音声データがBase64の文字列で取得できます。 iPhone 7 Plus / iOS 10.2 の場合は、音声フォーマットが WAV、周波数が44100になります。 Nexus 5 / Android 6.0.1 で音声レコーダーアプリを呼び出して録音した場合は、音声フォーマットがAMR、周波数が8000になります。そのため、取得した音声フォーマットに応じて Speech APIに渡すJSONの設定を変更しています。 language_code は日本語を解析するために ja_JP を指定してください。, encodingには、上記の他に FLAC/MULAW/AMR_WB を指定することができます。, 後はAjaxを使ってPOSTメソッドでデータを送るだけです。JSON形式でデータを送って、返却された結果をテキストエリア内に表示しています。今回は音声ファイルを送っているので syncrecognize を指定して同期処理していますが、ストリーミングによる認識にも対応しているようです。, 実際に試すと喋った日本語が高い精度でテキスト化されます。ここで見て欲しいのはmonacaがちゃんと英語のスペルになっている点です。, 食べ物で認識されるとカタカナのモナカになります。文脈を理解した上でテキスト化されているのが分かります。, Google Cloud Speech APIを使えば音声入力によってアプリを操作したり、入力を代行するのが簡単になります。ぜひ皆さんのアプリにも組み込んでみてください。今回のコードはmoongift/monaca_voice_recognitionにアップしてありますので、実装の参考にしてください。, プログラマ、エンジニアとしていくつかの企業で働き、28歳のときに独立。2004年、まだ情報が少なかったオープンソースソフトの技術ブログ『MOONGIFT』を開設し、毎日情報を発信している。2013年に法人化、ビジネスとエンジニアを結ぶエバンジェリスト業「DevRel」活動をスタートした。, 音声操作にも。MonacaアプリとGoogle Cloud Speech APIで音声認識を実現しよう, //speech.googleapis.com/v1beta1/speech:syncrecognize?key=APIキー -d @wav.json, // data:audio/wav;base64,aaa... といった形式で取得, // Google Cloud Speech APIに投げるデータフォーマットを作成, 'https://speech.googleapis.com/v1beta1/speech:syncrecognize?key=', ピュアAndroidにはプリインストールされている録音アプリがないため、ストアからアプリをインストールしています。, 上記以外の録音アプリでは、今回作成するアプリからの呼び出しができない可能性があります。. 詳細については、プロダクトのリリース ステージをご覧ください。, このページでは、Speech-to-Text で音声文字変換する音声データ内の話者ごとにラベル付けする方法について説明します。, 音声データに複数の人が話しているサンプルが含まれていることがあります。たとえば、電話の通話には 2 人以上の音声が含まれていることが一般的です。そのため、通話の音声文字変換では、その都度、話者が誰であるのかを示すことが理想的です。, Speech-to-Text は、同じ音声クリップ内の複数の話者を認識できます。音声文字変換リクエストを Speech-to-Text に送信するときに、音声サンプル内の異なる話者を識別するように指示するパラメータを指定できます。この機能は「話者ダイアライゼーション」と呼ばれ、音声内で話者が変わったことを検出して、検出した各音声に番号でラベル付けします。, 音声文字変換リクエストで話者ダイアライゼーションを有効にすると、Speech-to-Text は音声サンプルに含まれる異なる音声を識別するようになります。音声文字変換された各単語には、話者ごとに割り当てられた番号のタグがつけられます。同じ話者が話した単語は同じ数字になります。音声文字変換の結果に含まれる話者の数は、最大で Speech-to-Text が音声サンプル内で一意に特定可能な話者の数になります。, Speech-to-Text で話者ダイアライゼーションを使用すると、音声文字変換のすべての結果について、その時点までの集計情報が生成されます。各結果には前の結果の単語が含まれます。したがって、最終結果の words 配列が、音声文字変換の完全なダイアライゼーションの結果になります。, ご利用の言語でこの機能を利用できるかどうかについては、言語サポートページをご覧ください。, 話者ダイアライゼーションを有効にするには、リクエストに使用する RecognitionConfig パラメータの enableSpeakerDiarization フィールドを true に設定する必要があります。音声文字変換の結果を向上させるためには、RecognitionConfig パラメータの diarizationSpeakerCount フィールドで音声クリップ内の話者の数も指定します。diarizationSpeakerCount の値を指定しない場合は、デフォルト値が使用されます。, Speech-to-Text では、speech:recognize、speech:longrunningrecognize、Streaming のどの音声認識メソッドでも話者ダイアライゼーションをサポートしています。, 次のコード スニペットは、ローカル ファイルを使用して Speech-to-Text への音声文字変換リクエストで話者ダイアライゼーションを有効にする方法を示しています。, 詳細については、speech:recognize API エンドポイントをご覧ください。, 同期音声認識を実行するには、POST リクエストを作成し、適切なリクエスト本文を指定します。次は、curl を使用した POST リクエストの例です。この例では、Google Cloud Cloud SDK を使用して、プロジェクト用に設定されたサービス アカウントのアクセス トークンを扱います。Cloud SDK のインストール、サービス アカウントがあるプロジェクトの設定、アクセス トークンの取得などの手順については、クイックスタートをご覧ください。, リクエストが成功すると、サーバーは 200 OK HTTP ステータス コードと JSON 形式のレスポンス(speaker-diarization.txt ファイルに保存される)を返します。, 次のコード スニペットは、Google Cloud Storage ファイルを使用して Speech-to-Text への音声文字変換リクエストで話者ダイアライゼーションを有効にする方法を示しています。.