Необходима помощь в доработке голосового ассистента на Python

2 000 руб. за проект
17 декабря 2023, 17:48 • 3 отклика • 86 просмотров
Нужно улучшить работу передачи аудио файлов с сервера к клиенту (использую модуль socket для создания сервера.
Работа сервера:
На сервере преобразую текст(ответ голосового ассистента) в речь с помощью модуля torch(на нём запускается заранее натренированная нейросеть из интернета по преобразованию текста в речь), после того как получу: audio- переменная с аудио, подготавливаю ее к отправке к клиенту: audio=dumps(audio)- делаю это с помощью модуля pickle(from pickle import dumps), затем отсылаю переменную с аудио к клиенту (client_socket.sendall(audio))- перед отправкой, отправляю клиенту размер аудиопеременной (client_socket.sendall(bytes(f'{str(len(audio))', 'utf-8')) )
Работа клиента:

Клиент принимает информацию о размере переменной с аудио (size=client.recv(1024).decode('utf-8')), затем клиент получает аудиопеременную (audio=client.recv(int(size))) и преобразует ее в аудио для озвучки (audio=loads(audio)), используя- from pickle import loads, затем он все это воспроизводит с помощью- from sounddevice import play, stop (play(audio, 50000))

Проблема:

Все работает, но довольно часто выскакивает ошибка: pickle data was truncated 'utf-8' codec can't decode byte 0xbb in position 1: invalid start byte, на одних компьютерах эта ошибка выскакивает постоянно, на других часто, но не всегда, на третьих(в моей локальной сети) очень редко, предполагаю, что это связанно с качеством интернета и с тем, что файл довольно большого размера передается одним пакетом, а его данные повреждаются, что и приводит к ошибке, указанной выше

Tакже нужно улучшить-оптимизировать модуль, срабатывающий при обращении к голосовому ассистенту по имени(сейчас голосовой ассистент слушает речь(по предложениям), предложения определяются по паузам в речи, затем ищет свое имя в предложении, если он его находит, то подает запрос на сервер.
Необходимо, чтобы ассистент(модуль по преобразованию речи в текст) срабатывал при тригере(обращении к нему по имени), а после этого начинал уже слушать остальной текст. То есть ассистент должен начинать обработку речи(перевод речи в текст) только после того, как услышит тригер(обращении к нему по имени), для преобразования речи в текст я использую модуль PyAudio и Vosk(заранее натренированная нейросеть из интернета)
Отзывы
Avatar r50 a6ce93fe35b158fd29ba0e8681c918c22117160e9586a56eee4ffbc20df9bda1
Фрилансер
 
6 месяцев назад