33

Android の音声認識機能を使用しましたが、気に入っています。これは、お客様から最も高く評価されている機能の 1 つです。ただし、形式には多少制限があります。認識エンジンの意図を呼び出し、文字起こしのために録音を Google に送信させ、テキストが返されるのを待つ必要があります。

私のアイデアの中には、アプリ内でオーディオを録音し、そのクリップを Google に送信して文字起こしする必要があるものがあります。

オーディオ クリップを送信して、音声をテキストに変換する方法はありますか?

4

3 に答える 3

11

音声認識と音声録音を行うためにうまく機能するソリューションを手に入れました。ソリューションの動作を示すために作成した単純な Android プロジェクトへのリンクを次に示します。また、アプリを説明するために、プロジェクト内にいくつかの印刷画面を配置しました。

私が使用したアプローチを簡単に説明しようと思います。そのプロジェクトでは、Google Speech API と 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 に送信し、テキストを取得して、録音したばかりのサウンドを再生することができます。

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

于 2014-04-17T21:22:31.270 に答える
3

私の知る限り、音声クリップを Google に直接送信して文字起こしする方法はまだありません。ただし、Froyo (API レベル 8) は、音声認識サービスへの直接アクセスを提供するSpeechRecognizerクラスを導入しました。したがって、たとえば、オーディオ クリップの再生を開始し、Activity で音声認識エンジンをバックグラウンドで開始させることができます。これにより、完了後に結果がユーザー定義のリスナー コールバック メソッドに返されます。

SpeechRecognizer のメソッドはメイン アプリケーション スレッドで実行する必要があるため、次のサンプル コードはアクティビティ内で定義する必要があります。また、 RECORD_AUDIOパーミッションを AndroidManifest.xmlに追加する必要があります。



    boolean available = SpeechRecognizer.isRecognitionAvailable(this);
    if (available) {
        SpeechRecognizer sr = SpeechRecognizer.createSpeechRecognizer(this);
        sr.setRecognitionListener(new RecognitionListener() {
            @Override
            public void onResults(Bundle results) {
                // process results here
            }
            // define your other overloaded listener methods here
        });
        Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
        // the following appears to be a requirement, but can be a "dummy" value
        intent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, "com.dummy");
        // define any other intent extras you want

        // start playback of audio clip here

        // this will start the speech recognizer service in the background
        // without starting a separate activity
        sr.startListening(intent);
    }

RecognitionServiceを拡張して独自の音声認識サービスを定義することもできますが、それはこの回答の範囲を超えています:)

于 2013-02-19T20:20:37.620 に答える
3

残念ながら現時点ではありません。Android の音声認識サービスで現在サポートされている唯一のインターフェイスは です。このインターフェイスではRecognizerIntent、独自のサウンド データを提供することはできません。

これをご覧になりたい場合は、http://b.android.comで機能リクエストを提出してください。これは、既存の問題 4541にも関連しています。

于 2010-02-23T19:49:41.930 に答える