Как общая рекомендация, распознавание файлов, и особенно, если файлы больше, чем несколько МБ, должно выполняться с использованием API Watson /recognitions
(более подробно здесь: https://cloud.ibm. com / apidocs / speech-to-text ), который является асинхронным. Вам не нужно держать соединение открытым в течение нескольких часов, что не является хорошей практикой, поскольку вы можете столкнуться с тайм-аутом чтения, вы можете потерять сетевое соединение и т. Д. При асинхронном выполнении этого вы POST-файл и затем соединение заканчивается затем вы можете получать статус каждые X минут или получать уведомления с помощью обратного вызова, что бы вам ни помогало.
curl -X POST -u "apikey:{apikey}" --header "Content-Type: audio/flac" --data-binary @audio-file.flac "https://stream.watsonplatform.net/speech-to-text/api/v1/recognitions?callback_url=http://{user_callback_path}/job_results&user_token=job25×tamps=true"
между прочим. Ваш клиент веб-сокетов использует фреймы для пинг-понга, чтобы поддерживать живые соединения? Я заметил, что вы не запрашиваете промежуточные результаты ({"content-type":"audio\/mpeg","timestamps":true,"speaker_labels":true,"smart_formatting":true,"inactivity_timeout":-1,"interim_results":false,"max_alternatives":1,"word_confidence":false,"action":"start"}
), это еще один способ сохранить соединение открытым, но менее надежный. Пожалуйста, проверьте рамки для пинг-понга.
Просто, потому что Вы пишете, что приложение Windows Forms не мешает Вам использовать System.Web
. Просто добавьте ссылку на System.Web.dll
.
Использовать методы, которые находятся в платформе.NET, необходимо использовать Систему. Веб-пространство имен для получения метода HtmlDecode.
Да, Вы могли записать свой собственный метод, чтобы сделать это, но это не будет иметь большой смысл.
Просто добавьте ссылку на system.web.
См. эту статью , если вам все еще интересно, как это сделать без System.Web. Он предлагает решение для декодирования URI (это действительно то, что вы декодируете, а не объекты HTML, которые похожи на "& emdash;")
Вы можете использовать HttpUtility.UrlDecode
или HttpUtility.HtmlDecode