Tôi đang sử dụng API nhận dạng giọng nói Java - Jarvis, có trụ sở tại https://github.com/lkuza2/java-speech-api
Tuy nhiên, khi chạy ứng dụng, tôi gặp lỗi: Máy chủ trả về mã phản hồi HTTP: 400 cho URL:https://www.google.com/speech-api/v1/recognize?xjerr=1&client=chromium&lang=en-US&maxresults=1 (Đây là URL mà api này sử dụng để nhận phản hồi của Google)
Tôi cũng đã tạo khóa API như đã đề cập trong bài đăng trước và thử sử dụng URL (đây là API phiên bản 2): www.google.com/speech-api/v2/recognize?output=json&lang=en-US&key =MYKey". Nhưng trong trường hợp này, tôi nhận được phản hồi không có giá trị từ Google.
Ai đó có thể cho tôi biết làm thế nào để giải quyết vấn đề này?
Tôi đã thay đổi một số thứ từ lớp Công nhận:
Tôi đã thay đổi hằng số GOOGLE_RECOGNIZER_URL thành:
Chuỗi cuối cùng tĩnh riêng tư GOOGLE_RECOGNIZER_URL = "https://www.google.com/speech-api/v2/recognize?output=json&lang=en-us&key=YOUR_KEY";
Sau đó tôi đã thay đổi phương pháp này vì dữ liệu phản hồi có 2 hàng
Chuỗi riêng rawRequest(Tệp inputFile, int maxResults, int sampleRate) ném IOException
Dòng đầu tiên (dòng đã đọc và gửi) trống (tôi thực sự không biết tại sao), dòng thứ hai có phản hồi bằng giọng nói được nhận dạng. Để làm điều này, bạn phải đọc dòng thứ hai (không biết có cách nào tốt hơn không):
Phản hồi chuỗi = br.readLine();
phản hồi = br.readLine();
br.close();
trả lời phản hồi;
Sau đó, tôi đã thay đổi phương pháp này, tôi nghĩ rằng nó đang sử dụng phản hồi URL v1 hoặc thứ gì đó, bởi vì phương pháp này tìm kiếm các cách nói trong phản hồi json, nhưng không có khóa cách nói.
khoảng trống riêng tư phân tích cú pháp(Chuỗi rawResponse, GoogleResponse googleResponse)
nếu (rawResponse == null)
return;
JSONObject jsonObject = JSONObject mới (rawResponse);
JSONArray jsonArray= (JSONArray) jsonObject.get("kết quả");
JSONArray jsonArrayResult = (JSONArray) jsonArray.getJSONObject(0).get("alternative");
googleResponse.setResponse(jsonArrayResult.getJSONObject(0).get("transcript").toString());
googleResponse.setConfidence(jsonArrayResult.getJSONObject(0).get("sự tự tin").toString());
Tôi mới làm quen với thư viện json nên đây có thể là một phương pháp tốt hơn và ngắn gọn hơn, nhưng cách này hiệu quả với tôi!
Tôi là một lập trình viên xuất sắc, rất giỏi!