Получение 400 - неверный запрос для формата файла OGG при использовании Microsoft REST для преобразования текста в REST API - PullRequest
1 голос
/ 14 февраля 2020

Я использую Microsoft azure REST API для преобразования текста в текст. Согласно документам, форматы Ogg и Wav поддерживаются в REST API. Но, когда я отправляю запрос на получение аудиофайла OGG, ошибка 400 - ошибка запроса.

Я использую следующий код для подготовки запроса, и это работает для аудио формата WAV:

String url= "https://westus.stt.speech.microsoft.com/speech/recognition/conversation/cognitiveservices/v1?language=en-US&format=simple";

private void connect(String extension) throws IOException {
        connection = (HttpURLConnection) new URL(url).openConnection();
        connection.setDoInput(true);
        connection.setDoOutput(true);
        connection.setRequestMethod("POST");
        if (extension.equalsIgnoreCase(Constants.WAV))
            connection.setRequestProperty("Content-type", "audio/wav; codecs=\"audio/pcm\"; samplerate=16000");
        else if (extension.equalsIgnoreCase(Constants.OGG))
            connection.setRequestProperty("Content-type", "audio/ogg; codecs=\"audio/opus\"");
        connection.setRequestProperty("Accept", "application/json;text/xml");
        connection.setRequestProperty("Ocp-Apim-Subscription-Key", subscriptionKey);
        connection.setRequestProperty("Transfer-Encoding", "chunked");
        connection.setRequestProperty("Expect", "100-continue");
        connection.setChunkedStreamingMode(0); // 0 == default chunk size
        connection.connect();       
}

Использование этого для загрузки файла:

private void upload(InputStream inputStream) throws IOException {
    try (OutputStream output = connection.getOutputStream()) {
        byte[] buffer = new byte[1024];
        int length;
        while ((length = inputStream.read(buffer)) != -1) {
            output.write(buffer, 0, length);
        }
        output.flush();
    }}

1 Ответ

2 голосов
/ 17 февраля 2020

API работает нормально как для WAV, так и для формата OGG. Запрос также выглядит хорошо. Проблема может быть с отправкой аудиофайла в запросе. Если вы хотите использовать формат аудиофайла OGG, то аудиофайл должен иметь следующие свойства: OGG (код c: Opus, битрейт: 16-битный, частота дискретизации: 16 кГц, канал: моно)

В противном случае вы получите 400 ошибочных запросов. Убедитесь, что код c является Opus, потому что большинство файлов OGG имеют код Vorbis c, который не поддерживается API.

Вы можете использовать этот веб-сайт для преобразования аудио файл в требуемом формате.

...