Chattergram встречает Redis — расшифровка голосовых сообщений в письменный текст


Обзор моего проекта

Chattergram — это POC-приложение для чата, которое переводит ваши голосовые сообщения другим людям в письменный текст. Я создал его во время предыдущего хакатона & оно стало одним из моих любимых побочных проектов. Я не заработал денег, но узнал много нового о Typescript, Vue 3 и функциях Speech To Text.

Теперь я с гордостью представляю его усовершенствованного преемника:

Представляю Chattergram — на базе стека Redis.

Раньше проект не казался завершенным. Оглядываясь назад, я пришел к выводу, что некоторые варианты архитектуры были в лучшем случае неоптимальными:

  • Я не использовал кэширование на стороне сервера
  • Некоторые компоненты бэкенда были тесно связаны (например, обработчик чата имел жесткую зависимость от сервера Websocket).
  • PostgreSQL казался неподходящим выбором для такой тривиальной структуры данных. Я потратил много времени, чтобы правильно настроить структуру данных & воспользоваться преимуществами TS intellisense.

На следующем рисунке вы можете видеть структуру приложения до Redis:

Я рад сказать, что использование Redis позволило мне решить все эти проблемы достаточно просто:

  • Redis теперь действует как база данных фронтенда
  • Он синхронизирует записи чата и пользователей с MongoDB и обратно.
  • Функциональность pub/sub Redis позволила мне отделить обработчик чата от Websocket-сервера.
  • Хотя MongoDB не кажется более легкой в навигации, я обнаружил, что это более простая и быстрая постоянная база данных для быстрого запуска.

Ниже показана новая структура приложения. Почти точная копия того, как я ее планировал (запись файлов в кодировке base64 оказалась не самой лучшей идеей):

Использование Redis также значительно повысило производительность. Вы можете найти некоторые простые результаты бенчмарков в readme Github Repos

Chattergram использует фронтенд-компонент, построенный на Vue3. Он также предлагает спецификацию OpenAPI, чтобы помочь разработчикам понять его функциональность.

Спецификацию OpenAPI можно найти в разделе http://localhost:8080/api/docs после локального запуска приложения.

Категория представления:

MEAN/MERN Mavericks

Собственно, MFVN — Mavericks (MongoDB, Fastify, Vue, Node)

[Дополнительно: Видео объяснение моего проекта]

Используемый язык

  • Node.js + Typescript

Ссылка на код

tq-bit / chattergram-redis

Chattergram + Redis

Приложение для чата, транскрибирующее голосовые сообщения в текст — на базе стека Redis.

Chattergram работает на двух отдельных приложениях — фронтенде и бэкенде. Для доступа к чату необходимо создать учетную запись. Все ваши данные будут храниться на локальном экземпляре Redis (& MongoDB).

После регистрации вы можете начать общаться с другими пользователями. Если вы решите отправить им голосовое сообщение, Deepgram попытается расшифровать его для вас и вашего отправителя. При желании вы можете прослушать записанное сообщение.

Я создал Chattergram-Redis как POC-проект для Redis Hackathon на dev.to. Пожалуйста, не используйте его в продуктивной среде.

Как это работает

Видео объяснение

Вы можете найти видеоверсию моей презентации на Youtube:

Как хранятся данные:

  • Это приложение использует два основных типа данных: User и…
Посмотреть на GitHub

Дополнительные ресурсы / информация

  • Оригинальный (=легальный) файл readme Chattergram
  • Вход в консоль Deepgram
  • Инструментарий для тестирования производительности Apache Jmeter

Коллабораторы

Solo — проект


  • Проверьте Redis OM, клиентские библиотеки для работы с Redis как многомодельной базой данных.
  • Используйте RedisInsight для визуализации данных в Redis.
  • Зарегистрируйтесь для получения бесплатной базы данных Redis.

Оцените статью
devanswers.ru
Добавить комментарий