Невозможно применить какой-либо тег SSML к тексту в системе преобразования текста в речь IBM Watson с помощью CURL

Мне удалось сгенерировать голоса с Майклом или Эллисоном через CURL с IBM Watson, но как только я пытаюсь вставить в текст какой-либо тег ‹›, например или любое ‹преобразование голоса {атрибуты}›, он терпит неудачу, независимо от того, ПОЛУЧИТЬ или ОТПРАВИТЬ. Я нашел здесь несколько ответов (включая Как мне настроить скорость речи в сервисе преобразования текста в речь Watson с помощью curl?), но все, что я пробовал, не удалось. Например, я попробовал такой код прерывания:

curl -X POST -u "apikey:{MYKEY}" --header "Content-Type: application/json" --header "Accept: audio/wav" --data "{\"text\":\"hello <break strength='500ms'></break> hello world\"}" --output hello_world.wav "https://api.us-east.text-to-speech.watson.cloud.ibm.com/{MYINSTANCE}/v1/synthesize?voice=en-US_AllisonVoice"

Я получаю следующую ошибку: ‹было неожиданным в это время. Обратите внимание, что без кода он работает хорошо, и текст создается. и то же самое для:

curl -X GET -u "apikey:{apikey}" --output hello_world.wav "{url}/v1/synthesize?accept=audio%2Fwav&amp;text=&lt;voice-transformation rate=&quot;slow&quot;&gt;Hello%20world&lt;voice-transformation rate=&quot;slow&quot;&gt;&amp;voice=en-US_AllisonV3Voice"

... как было предложено одним из респондентов на вышеупомянутой странице.

Я также пробовал всевозможные попытки urlencode тегов ‹›, использовать разные теги преобразования голоса, или ни одного, или просто ломаться, я пробовал использовать одинарные и двойные кавычки, экранированные или нет и т. Д. Обычно он либо возвращает

{ошибка: неверный запрос. (HAP), code: 400, code_description: Bad request}

или: Система не может найти указанный файл, или ‹было неожиданным в это время.

Поэтому я хотел бы использовать все эти изменения SSML, но пока мне не удалось сделать это с помощью curl. Будем надеяться, что кто-то знает, как это сделать.

P.S .: Я попробовал, вставив полный запрос в командную строку в Windows и на Linux-сервере с помощью PuTTy.


person Edgardo DelTabarnaco    schedule 25.03.2021    source источник
comment
Как ты это кодировал? ‹И› - специальные символы в оболочке Linux / UNIX   -  person data_henrik    schedule 25.03.2021


Ответы (1)


Обратитесь к руководству по curl - https://curl.se/docs/manual.html

Данные сообщения должны быть закодированы. ... Данные должны быть правильно закодированы в URL. Это означает, что вы заменяете пробел на + и заменяете странные буквы на% XX, где XX - шестнадцатеричное представление кода ASCII буквы.

Это означает, что вам нужно кодировать

< как %3C, хотя &lt; также может работать

'›' Как %3E, хотя &gt; также может работать

person chughts    schedule 25.03.2021
comment
Спасибо. Это помогло мне добиться определенного прогресса. После того, как urlencoded, он действительно работает в том смысле, что он не возвращает ошибку, но теперь голос читает вслух всю кодировку: привет плюс процент 3C и т. Д. Он он. - person Edgardo DelTabarnaco; 25.03.2021
comment
Вот что я пробовал на этот раз: curl -X POST -u MYAPIKEY --header Content-Type: application / json --header Accept: audio / wav --data {\ text \: \ hello +% 3Cbreak% 3E% 3C% 2Fbreak% 3E + world \} --output hello_world.wav MYWATSONURL / v1 / synthesize? Voice = en-US_AllisonVoice - person Edgardo DelTabarnaco; 25.03.2021
comment
Я что-то неправильно понял в вашем объяснении? Или у вас есть другое решение? Я действительно хотел бы применить эти эффекты SSML. - person Edgardo DelTabarnaco; 25.03.2021