Доработать код на Python3 для передачи данных по websocket

Цена договорная
24 февраля 2021, 18:33 • 4 отклика • 52 просмотра
В сущности, этот заказ было бы логичнее представить как вопрос на Stack Overflow. Лишь потому, что он там уже опубликован и до сих пор не получил никакой дельной реакции, размещаю здесь. Теперь в формате заказа и, разумеется, за вознаграждение.

Итак, имеется проект по автоматическому распознаванию речи (последняя формируется в виде аудиопотока в ходе телефонного разговора). Если вдаваться в мало что значащие детали, то фразы из телефонного диалога, организуемого через VoIP-соединение (в качестве VoIP-сервера установлен Asterisk PBX), извлекаются из канала и в реальном времени направляются в систему распознавания Kaldi, работающую на сервере Vosk (ссылка на проект, откуда весь этот софт был взят: https://github.com/alphacep/vosk-asterisk). И система, и сервер развёртываются внутри docker-контейнера, вся эта композиция ждёт входных данных по websocket на порту 2700. Вот и подобрались к сути.

Для приёма потока из канала телефонии используется промежуточный сервер, код которого представлен в файле server.pdf (в оригинале - исходник на Python, не отвечает требованиям по формату вложений в заказах). Поток поступает на сервер при выполнении функции serve(), перед вызовом которой запускается transcriber.start(), в свою очередь позволяющий начать передачу данных на сервер распознавания. Логика transcriber'а описана в файле transcription.pdf. Именно в ней и случилось столкнуться с проблемами.

С помощью инструкций, содержащихся в этом файле, требуется решить 2 задачи:
1) отправить данные на сервер распознавания по адресу ws://127.0.0.1:2700
2) получить ответ от сервера, добавив его к значению переменной output.

output - переменная, кумулирующая текст, полученный по итогам распознавания. Проблема - отсутствие достаточных знаний для того, чтобы настроить потоковый обмен данными через websocket с имплементацией на Python.

Получаем: задание состоит в доработке файла transcription.py таким образом, чтобы данные беспрепятственно перемещались от промежуточного сервера к серверу распознавания и обратно, исключительно по websocket. Критерий готовности - предоставление заказчику исходника (на основе текущего содержимого transcription.pdf), включение которого в проект позволит двум серверам вести потоковый обмен данными в пределах локальной системы.
Файлы