2011-08-08 18 views
12

おそらく知っているように、Android APIを使用すると、音声テキストを実装するのは簡単です。 APIの意図を呼び出すだけで、テキストが返されます。私のケースはちょっと違う、私はユーザーから録音してSDカードに保存されている、あらかじめ録音された3GPPサウンドファイルを持っている。私は他の音声認識のようにそれをテキストに転記することが可能かどうかを知りたい。 speech-to-text APIはあなた自身のサウンドファイルのアップロードを許可していますか?それともこれは不可能ですか?自分のサウンドファイルからのテキストへの音声翻訳

答えて

3

APIでは許可されていませんが、潜在的な回避策についてはthis blog post and its commentsを参照してください。また、ファイルには高品質の音声が含まれていることを確認してください(少なくとも16ビットと16 kHz)。

も参照してください:

+0

この記事では、サーバーにサウンドファイルを送信し、JSONが戻ってくるのを待つことを証明しています。だから私はあなたがクライアント側で行う必要があると思うのは、3GPPファイルをFLACに変換してサーバーに投稿することだけです。うまくいけばそれは簡単です。 :) – Brian

+0

それは現在Googleによって閉鎖されているGoogle Speech v1 APIに依存しています。音声v2 APIにはキーが必要で、私の経験では予測できなくなっています(アプリケーションが1日に行うことができる外部リクエストの数に制限があると思います) –

2

私はサウンドファイルからの音声をテキストに持つようにうまく機能しているソリューションを得ました。ここでは、ソリューションの動作を示すために作成した簡単なAndroidプロジェクトへのlinkです。また、私はアプリを説明するためにいくつかのプリントスクリーンをプロジェクトの中に入れました。

私が使ったアプローチを簡単に説明しようとしています。 Google Speech APIとFlac録音の2つの機能を組み合わせました。

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

"(...)新しい[Google] APIは全二重ストリーミングAPIです。つまり、実際には2つのHTTP接続を使用しています「ライブ」チャンクストリームとしてのコンテンツ、結果にアクセスするための2番目のGETリクエストなど、より長いオーディオサンプルやストリーミングオーディオの方がはるかに理にかなっています。

ただし、このAPIは正常に動作するにはFLACサウンドファイルを受け取る必要があります。 Flacレコーディング

私はそのプロジェクトで、AudioBooというオープンソースのアプリケーションからコードとライブラリの一部を抜き出し、適応させることでFlacレコーディングを実装しました。 AudioBooはネイティブコードを使用してflac形式を記録し、再生します。

このように、flacサウンドを録音し、Google Speech APIに送信し、テキストを取得し、今録音されたサウンドを再生することができます。

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

+0

NDK、固定ロットのパスとインポートをインストールしましたが、あなたが提案するプロジェクトは動作しません。私は今までに全面的に廃止される可能性があるので、単にダウンボートしません... – Josh

0

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

1)あなたは を希望する任意の名前でメソッドを作成します)、そのメソッドの最初の書き込みのコード内:

まず、次の手順を使用して、あなたのSDカードであってもよく、オーディオファイルを持っている必要がありますそのコード次の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(); 
    } 
01への入力のようになるだろう、あなたのオーディオファイルを再生するスピーカーを使用するためのコードを書きます参考のため

は私のブログ https://sureshkumarask.wordpress.com/2017/03/19/how-to-give-our-own-audio-file-as-an-input-to-any-speech-recognizer/

を参照してください私は私のブログでのjavaファイルのリンクを同封しています。

+1

このリンクは質問に答えるかもしれませんが、ここでは答えの本質的な部分を含めて参考にしてください。リンクされたページが変更された場合、リンクのみの回答は無効になる可能性があります。 – slfan

+0

ご迷惑をおかけして申し訳ございません。コメントありがとうございます.. – SuKu

関連する問題