запросить Google речь к текстовому API, используя android залп - PullRequest
1 голос
/ 19 февраля 2020

Я работаю над приложением Android, которое записывает речь, используя mi c устройства android, после чего я кодирую записанную речь в формат base64. чтобы преобразовать речь в текст, я использую API Google Speech Cloud и android Volley для отправки запроса в Google API. проблема в том, что когда я вызываю метод для запроса, я получаю эту ошибку ==>

E / Volley: [5921] BasicNetwork.performRequest: непредвиденный код ответа 400 для https://speech.googleapis.com/v1/speech: распознавать ? key = {mykey}

Вот мой код:

    public class SpeechService {

    private String Url ="https://speech.googleapis.com/v1/speech:recognize?key=${mykey}";

        private RequestQueue requestQueue ;
        private AppCompatActivity app ;
        String savedata ;

        public SpeechService(AppCompatActivity app){

            this.app = app ;
            requestQueue = Volley.newRequestQueue(app.getApplicationContext());
        }

    public void getTextFromGSpeech1(String EncodedSpeech){

        JSONObject jsonObject = new JSONObject();
        JSONObject config = new JSONObject() ;
        JSONObject audio = new JSONObject() ;

        try {

            config.put("encoding", MediaRecorder.OutputFormat.AMR_WB);
            config.put("SampleRateHertz","rba9 rba9");
            config.put("languageCode","fr-FR");
            audio.put("content",EncodedSpeech);

            jsonObject.put("audio", audio );
            jsonObject.put("config", config);

        } catch (JSONException e) {
            e.printStackTrace();
        }


        JsonObjectRequest JObjectREQUEST = new JsonObjectRequest(Request.Method.POST , Url  , jsonObject ,new Response.Listener<JSONObject>(){

            @Override
            public void onResponse(JSONObject response) {

                System.out.println("JSON response is  ============> ");
                System.out.println(response);

            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {

                System.out.println("failed ...............;");

            }
        }){

            @Override
            public String getBodyContentType() {
                return "application/json; charset=utf-8";
            }

        };

        requestQueue.add(JObjectREQUEST);

    }
}

и формат объекта Json должен быть таким

 {   "audio": {
            "content": ""         
          }
            ,
          "config": {
            "encoding": "ENCODING_UNSPECIFIED",
            "languageCode": "fr-FR",
            "sampleRateHertz": 1600
          }
        }

1 Ответ

1 голос
/ 20 февраля 2020

Должно быть RecognitionConfig.AudioEncoding.AMR_WB, а не MediaRecorder.OutputFormat.AMR_WB. Частота дискретизации также неверна.

...