Ладно, теперь надо, чтобы Яша заговорил. Вы не поверите, но TTS (Text-To Speech) у Гугла нет. Точнее, есть, но это или мифическая нейросеть, которая говорит получше многих, но пока не представлена публике, или их TTS из Google Translate, который использовать нельзя, но если очень хочется – то можно. Но хочется не очень, поскольку у Microsoft вылупились Microsoft Cognitive Services, в которых много вкусного и пока что весьма щедрые бесплатные лимиты. Более того, они внезапно поддерживают формат, понятный HikVision (8khz-8bit-mono-mulaw aka G711Ulaw, несомненно знакомый вам по сотовым телефонам). Так что всё складывается. Берём этот mulaw и пихаем в камеру. Получаем полную херню. И через некоторое время понимаем, что интерфейс в камере совершенно не случайно называется TwoWayAudio. Поскольку реализует он РАЦИЮ. Предполагается, что в камеру приходит звук с микрофона. В реальном времени. И поскольку допущение, что у говорящего нет машины времени, показалось разработчикам вполне разумным, то буфера для аудио просто нет. И если запихать сразу всю фразу целиком, то камера захлёбывается. И получаем полную херню. Блин. Ну что, реализуем slow feeder. Который мееедленно отсылает пакеты с нужной задержкой. А нужная задержка – это такая задержка, которая считается с прошлой посылки. Поскольку сеть, да и процессор у нас не в монопольном использовании. Дальше неделю-другую играемся с размером пакета и задержкой до получения приемлемого результата. Он всё равно почему-то икает, но до детального анализа руки пока не дошли. Ну и всё предсказуемо идёт псу под хвост, если в этот момент работает определение тел в прихожей на 100% CPU. В принципе, это решается локом камер (# TODO). Ну, знаете, как у женщин, которые открывают рот, когда красят глаза. Вот и Яша примерно также – у него или рот открыт, или глаза #Jarvis
Комментариев нет:
Отправить комментарий