Azure «Text-To-Speech» возвращает «Неверный CID или язык». Что это значит? - PullRequest
0 голосов
/ 12 января 2019

Я пытаюсь опубликовать в службе преобразования текста в речь Azure. Я уже получил токен доступа, и теперь я пытаюсь сделать вызов для преобразования текста в речь (используя Best HTTP в Unity):

            HTTPRequest request = new HTTPRequest(new Uri(APIEndpointURL), HTTPMethods.Post, _GotTextToSpeechResponse);

        request.AddHeader("Authorization", "Bearer " + accessToken);
        request.AddHeader("Content-Type", "application/ssml+xml");
        request.AddHeader("X-Microsoft-OutputFormat", "raw-16khz-16bit-mono-pcm");
        request.AddHeader("User-Agent", "My app name");

        request.RawData = Encoding.UTF8.GetBytes("Hello world!");
        request.Send();

Возвращает код состояния 400 со следующим:

{"Сообщение": "Неверный CID или язык"} "

Документация говорит, что если я не определяю язык, а просто отправляю текст, он должен использовать голос по умолчанию. Затем есть «Пользователь-агент», который должен быть «Имя приложения». В документации не сказано, должно ли это быть где-то предопределено или к чему это относится.

Что может означать ошибка и как ее исправить? Я делаю неправильно, когда я публикуюсь как «Необработанные данные»? Там написано, что я должен опубликовать текст в теле запроса.

1 Ответ

0 голосов
/ 15 января 2019

Есть несколько вещей, которые не ясны в документации.

Если у вас есть подробный взгляд на предоставленный образец здесь : sample from doc

1010 * Конечная точка * Вы хотите использовать некоторую функцию text-to-speech (генерировать голос для вашего Hello world! текста), но вы вызываете конечную точку stt (речь-в-текст), созданную для распознавания говорящего: https://westeurope.stt.speech.microsoft.com/speech/recognition/conversation/cognitiveservices/v1 Чтобы использовать tts, конечная точка должна быть в том же формате, что и образец: https://westeurope.tts.speech.microsoft.com/cognitiveservices/v1 Содержание запроса

Что касается того, что вы не хотите использовать SSML, документ гласит:

Текст отправляется как тело HTTP-запроса POST. Это может быть простой текст (ASCII или UTF-8) или формат языка разметки речи (SSML) (UTF-8). Обычные текстовые запросы используют голосовой речевой сервис по умолчанию и язык. С SSML вы можете указать голос и язык.

Итак, я попробовал следующее: изменив тип контента с "application/ssml+xml" на "text/plain". Но в этом случае я получил:

Error 400 Data at the root level is invalid. Line 1, position 1.

Похоже, что это обычная ошибка при разборе xml, поэтому похоже, что где-то здесь есть ошибка, и я не могу найти пример в документе, использующем TTS и без ssml.

Кто-то опубликовал вопрос относительно этого в разделе «Обратная связь» на странице (в разделе «Дальнейшие действия» здесь )

...