web-dev-qa-db-ja.com

独自のサウンドファイルからテキストへの音声

ご存知かもしれませんが、Android APIを使用すると、音声認識の実装は非常に簡単です。APIのインテントを呼び出すだけで、テキストが返されます。私の場合少し異なりますが、ユーザーから録音してSDカードに保存した3GPPサウンドファイルを事前に録音しました。他の音声認識と同じようにテキストに変換できるかどうかを知りたいのですが、音声は- to-text APIを使用すると、独自のサウンドファイルをアップロードして処理できますか?それとも不可能ですか?

13
Brian

APIはそれを許可していませんが、潜在的な回避策については このブログ投稿とそのコメント を参照してください。また、より良い転写を得るために、ファイルに高品質のオーディオ(少なくとも16ビットと16 kHz)が含まれていることを確認してください。

参照:

3
Kaarel

音声ファイルからテキストに音声を変換するためにうまく機能するソリューションを手に入れました。これが リンク ソリューションの動作を示すために作成した単純なAndroidプロジェクトです。また、アプリを説明するためにプロジェクト内にいくつかの印刷画面を配置しました。

私が使用したアプローチについて簡単に説明しようと思います。そのプロジェクトでは、Google SpeechAPIとFlacレコーディングの2つの機能を組み合わせました。

Google Speech APIは、HTTP接続を介して呼び出されます。 Mike Pultz APIの詳細を示します:

「(...)新しい[Google] APIは全二重ストリーミングAPIです。これは、実際には2つのHTTP接続を使用することを意味します。1つはPOSTリクエストとしてコンテンツをアップロードする「ライブ」チャンクストリームと、結果にアクセスするための2番目のGETリクエスト。これは、長いオーディオサンプルやストリーミングオーディオの場合にはるかに意味があります。」

ただし、このAPIが正しく機能するには、FLACサウンドファイルを受信する必要があります。それで2番目の部分に進みます:Flacレコーディング

私は、AudioBooと呼ばれるオープンソースアプリからコードとライブラリの一部を抽出して適応させることにより、そのプロジェクトにFlacレコーディングを実装しました。 AudioBooは、ネイティブコードを使用してflac形式を記録および再生します。

したがって、flacサウンドを録音し、それをGoogle Speech APIに送信し、テキストを取得して、録音したばかりのサウンドを再生することができます。

私が作成したプロジェクトには、それを機能させるための基本原則があり、特定の状況に合わせて改善することができます。別のシナリオで機能させるには、GoogleChromium-devグループに参加して取得したGoogleSpeechAPIキーを取得する必要があります。動作していることを示すために、そのプロジェクトに1つのキーを残しましたが、最終的には削除します。誰かがそれについてもっと情報を必要とするならば、私がこの投稿に2つ以上のリンクを置くことができない原因を私に知らせてください。

2
lsantsan

現在、独自の音声ファイルをGoogleに送信して処理することはできませんが、代わりにAndroidデバイスでスピーカーとマイクを使用して、音声ファイルをGoogle音声認識への入力として使用できます。

まず、SDカードにある可能性のあるオーディオファイルが必要です。次に、次の手順を使用します。

1)任意の名前でメソッドを作成します

2)そのメソッド内で、最初にGoogle音声認識を使用するためのコードを記述します

3)そのコードに続いて、スピーカーを使用してオーディオファイルを再生するためのコードを記述します。これは、Googleの音声認識への入力として使用されます。

 //code for google voice recognition
 Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
 intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
                        RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
 intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.getDefault());
 intent.putExtra(RecognizerIntent.EXTRA_Prompt,
                        getString(R.string.speech_Prompt));
 try {
      startActivityForResult(intent, REQ_CODE_SPEECH_INPUT);
 } catch (ActivityNotFoundException a) {
 Toast.makeText(getApplicationContext(),
                            getString(R.string.speech_not_supported),
                            Toast.LENGTH_SHORT).show();

//code for playing the audio file which you wish to give as an input
    MediaPlayer mp = new MediaPlayer();
    try {
     mp.setDataSource(file); // here file is the location of the audio file you wish to use an input
        mp.prepare();
        mp.start();
    } catch (Exception e) {
        e.printStackTrace();
    }

参考までに私のブログを参照してください https://sureshkumarask.wordpress.com/2017/03/19/how-to-give-our-own-audio-file-as-an-input-to-any-speech -認識機能/

Javaファイルへのリンクをブログに同封しました。

0
SuKu