Пожалуй, новости о языковых моделях и их использовании уже немного надоели, но лично я нашел для себя полезное применение - изучать английский, в том числе и разговорный. Посмотрим, что могут нам предложить в этом деле товарищи из openai: совместим gpt-3.5-turbo, whisper и telegram.

Предисловие

Основная мотивация - нужно заговорить на английском. Мой уровень B1, почти B2, но преимущественно в чтении и письме. Уроки с учителем стоят довольно дорого, ходить в английские клубы я стесняюсь, да и вообще коммуницировать с людьми не люблю. Поэтому решил, что для начала я заставлю себя говорить, хотя бы плохо, а потом отшлифую уровень с живыми людьми.

Еще одним мотиватором было желание сделать свой личный проект с telegram-ботами и серверами. Идеи появлялись и раньше, но тратить деньги на сервер с бесполезным приложением не хотелось. А тут вроде и полезно.

Приводить код в статье, наверное, нет смысла. Интересующимся предлагаю заглянуть в репозиторий.

Постановка задачи

Для начала нужно выяснить, а может ли вообще chatGPT помочь мне с английским. Мне нужна была не просто болталка, а коррекция моих фраз. Естественно, языковая модель прекрасно поняла правила игры:

В ходе диалога модель что-то поправляла, что-то пропускала. Игнорирование моих ошибок было особенно заметно на длинных сообщениях.

Но печатать текст - это не так сложно, как разговаривать. При печати у меня больше времени на подумать и исправить. Если я хочу большего реализма, то мне нужно говорить - я зачитываю свой ответ в микрофон, модель распознавания речи (SAR) транскрибирует мою речь в текст, который и будет отправляться языковой модели. Быстрый гуглеж выдал уже готовые поделки, вроде voiceGPT. Но это приложение оказалось слишком неудобным для моих задач: запись голоса обрывалась при первом же распознавании части фразы, а постоянные проверки браузера при подключении к аккаунту openai раздражали. Я решил, что проще будет использовать любую хорошую модель SAR, тем более, что я уже запланировал реализовать передачу сообщений через отдельный сервер, чтобы общаться с ботом в телеграме, удобно развалившись вечером на диване.

Проверка моделей SAR

Забегая вперед, скажу, что в итоге я использую модель whisper от того же openai через API. Но изначально я планировал загружать модель на сервере (тем более, что они работают на CPU), поэтому я пошел на hugginface и выбрал для себя несколько моделей для сравнения. Ниже представляю расшифровку текста задания для chatGPT, которую я надиктовал в диктофон:

  • facebook/wav2vec2-base-960h

    UNCLE SUGGEST A TOPIC FAL CONVERSATION AND YOU WILL ASK AQUATION ON IT THEN CHECK MY AUN SECAL GROMETICAL ERRORS AND OFFER THE CORRECT OPTION THEN YOU ASK THE NEXT COUATION LET'S GO

  • facebook/wav2vec2-large-960h-lv60-self

    I WILL SUGGEST A TOPIC FOR CONVERSATION AND YOU WILL ASK A QUESTION ON IT THEN CHECK MY ANSWER FOR GRAMMETICAL ERRORS AND OFFER THE CORRECT OPTION THEN YOU ASK THE NEXT QUESTION LET'S GO

  • jonatasgrosman/wav2vec2-large-xlsr-53-english

    i will suggest a topic for conversation and you will ask a quetion on it then check my alswey for gramatical errors and offer the correct option then you ask the next question let's go

  • openai/whisper-medium.en

    I will suggest a topic for conversation and you will ask a question on it. Then check my answer for grammatical errors and offer the correct option. Then you ask the next question. Let's go!

И снова openai оказался лучше всех, даже умеет поддерживать регистр и знаки препинания. Вообще, можно было бы и использовать последнюю модель, но на слабом процессоре сервера (к тому же единственном) расшифровка сообщения занимала примерно минуту, из-за чего диалог был похож на типичный диалог с приятелем в вк, который постоянно пропадает. В конце концов, 0.006 доллара за минуту расшифровки аудиосообщения не так уж много.

python-telegram-bot

До этого я не писал телеграм-ботов, в связи с чем, возможно, выбрал не самую лучшую библиотеку. Кроме того, почти все примеры и решения на stackoverflow с использованием этой библиотеки были для старой версии (как будто бы все перестали писать телеграм-ботов). На самом деле, ничего принципиально нового здесь сказать не могу. Обычный бот, который принимает текстовые и аудио-сообщения и перенаправляет их по API. Ботом планирую пользоваться пока что только я, позже, возможно, добавлю жену, поэтому настройки безопасности довольно простые - все входящие сообщения фильтруются по моему телеграм-id.

Из интересного - в интернетах советуют настраивать вебхуки, чтобы не дожидаться опроса от серверов телеграма. На практике оказалось, что задержки по времени даже не заметны, и для таких мелких задач можно оставить и polling.

Собираем все вместе

Очевидно, хотя сразу я об этом не подумал, что языковая модель не хранит в себе историю переписки, из-за чего при использовании gpt через API нужно каждый раз передавать весь свой диалог, как, например, в коде ниже (а ведь обещал без кода).

def process(self, message: str, role: str = "user") -> str:

    self.query['messages'].append({"role": role, "content": message})
    response = self.session.post(self.url, json=self.query)
    if response.status_code == 200:
        reply = json.loads(response.text)['choices'][0]['message']['content']
        self.query['messages'].append({"role": "assistant", "content": reply})
        return reply

    return f"Something went wrong. {response.text}"

Для использования в одно лицо этого достаточно + кнопка сброса, которая очищает список запросов.

Функционал бота позволяет начать свободный диалог, используя gpt как простую болталку. А чтобы не повторять каждый раз задание, под начало диалога с коррекциями от модели, я выделил отдельную кнопку. В боте стоят фильтры на обработчик текста или аудио, можно общаться как удобно. И вот, что получилось при запуске:

Модель приняла правила, но сделала это довольно сухо по сравнению с веб-версией. Она не предложила выбрать тему разговора и не дала понять, спрашивает ли она у меня что-либо в данный момент. Хотя ответы были связными и корректными, а при уходе от темы она это замечала. Но я заметил странное поведение, который требует от меня самого быть чуть более вежливым:

Я сначала поздоровался и потребовал задание, и это привело к тому, что модель отреагировала почти так же, как в веб-версии, т.е. более развернуто и "по-человечески". Очевидно, это связано с необходимостью первым сообщением явно задавать модели роль ассистента. Еще из интересного - видно, как модель уводит в сторону и она начинает задавать дополнительные вопросы, хоть и по теме.

Выбор сервера

Самый дешевый и самый слабый. Такой сервер обошелся мне в 1900 рублей в месяц, примерно как один урок в известной школе английского языка.

Сервер
Сервер

Никакого сложного администрирования я не делал, тем более, что не разбираюсь в этом, поэтому рекомендую обратиться к соответствующим статьям, как, например, эта.

Выводы

А выводы очень простые - я потратил один день, чтобы написать интересную и полезную вещь, которая позволяет мне болтать с "иностранцем", который хоть и не всегда, но исправляет мою речь. Надеюсь, кому-нибудь такой опыт окажется полезным.

Комментарии (23)


  1. keydach555
    00.00.0000 00:00
    +2

    С новыми возможностями ИИ - теряется смысл в этих новых возможностях ) Есть ли смысл в изучении иностранных языков, если ИИ может выступать в роли личного бесплатного переводчика? Это становится просто вопросом удобства, вопросом интерфейсов, а значит вопросом времени. Если автор за день написал настолько удобное приложение, то что мешает большому коллективу написать за пару месяцев приложение, которое закроет вопрос с переводом полностью - например выводя перевод текстов через очки дополненной реальности, а голосовой синхронный перевод - в наушники в реальном времени?


    1. mc2
      00.00.0000 00:00
      +3

      Перевод Гугл переводчика не всегда такой как ожидается, а модем ли мы надеятся что ИИ не будет вести себя точно так же?


    1. Hait
      00.00.0000 00:00
      +1

      У Гугла вроде как уже пару лет доступен "диалог", но популярности он не сыскал. Плюс у носимых устройств есть зависимость от батареи и интернета.

      Ну и тот же midjourney закрыл бесплатный доступ.


    1. ru1z
      00.00.0000 00:00
      +1

      Наверное зависит от целей. Если цель — случайное знакомство с какой-то информацией и туризм, то почему бы и нет, надел гугл-очки, гугл-наушники, гугл-кеды и поехал диким туристом в Индию. В других случаях — какая-то слишком сильная зависимость от технологий и возможные ошибки. Например, я бы не пошел к врачу, который учился в Москве, но не говорит по-русски.


    1. oleg_rico
      00.00.0000 00:00
      +3

      Даже самый лучший синхронный переводчик частенько не может донести твою мысль до собеседника.

      Ну и изучение иностранных языков очень хорошо развивает мозг и отодвигает его деградацию


    1. asked2return
      00.00.0000 00:00

      все давно во сне учат иностранные языки - там главное как проснешься до обеда только на нем говорить но как покормят то можешь прекратить


    1. gatoazul
      00.00.0000 00:00

      Языки учат еще, если хотят ближе познакомиться с культурой.


    1. lik012
      00.00.0000 00:00

      Даже если представить сферический переводчик в вакууме который будет супер эффективный и работать без доступа к интернету, то скорость общения все равно будет вдвое выше чем при обычном общении: надиктовать/напечатать предложение -> озвучить/прочитать перевод и обратно. Для тур поездок сгодится, для нормального общения/обучения ну такое себе.


  1. ganqqwerty
    00.00.0000 00:00
    +7

    Другая вещь, которой я пользуюсь для языков — скармливаю список слов, которые надо запомнить и прошу создать историю с ними. Затем задавать мне вопросы по этой истории. Методика TPRS.


    1. ArkadiyShuvaev
      00.00.0000 00:00
      +1

      Классно. А как собираете список слов? Просто на листочке записываете, когда незнакомое слово встречаете?


      1. shoco
        00.00.0000 00:00

        Вместо выписывания слов вручную, можно просто брать историю поиска из приложения-словаря.


  1. Semen55338
    00.00.0000 00:00

    Для таких задач подошёл бы сервер за 190 рублей с 512 mb ram. 8gb ram это вы погорячились


    1. AlexBryl27 Автор
      00.00.0000 00:00

      Да, верно. Только я изначально хотел разворачивать на нем модель распознавания речи, поэтому сначала купил, а потом отказался от идеи. Кроме того, сервера резко кончились. Ещё летом я находил сервера на raspberry, а сейчас это был самый минимальный с готовой конфигурацией. Впрочем, я прошёлся только по топу компаний из поиска.


      1. Semen55338
        00.00.0000 00:00

        Надо полагать вы искали среди VPS (выделенная физическая машина), а 100 рублевые это VDS просто виртуалка


        1. nidalee
          00.00.0000 00:00
          +2

          Оба варианта — просто виртуалка. Там первая буква аббревиатуры значит "Virtual".


      1. balezz
        00.00.0000 00:00

        Комплект мать с Xeon 2650 16 GB RAM на Алиэкспресс около 7 тыр, плюс новый кулер и БП в любой старый корпус = 11 тыр за домашний сервер. Статический IP у Ростелеком 200 руб в месяц, плюс столько же за электричество.


  1. craxti
    00.00.0000 00:00

    А ведь и правда ИИ дает новые возможности для обучения чему-то новому или то что было интерсно


  1. tormozedison
    00.00.0000 00:00

    А уверены, что ИИ не будет в изучаемом вами языке иногда грубые ошибки делать? А вы решите, что так и должно быть, и это выучите.

    Что, впрочем, не исключено и при языковой практике с человеком.


    1. AlexBryl27 Автор
      00.00.0000 00:00

      Думаю, иногда будет. Но надеюсь, что моих познаний хватит для того, чтобы заметить это. А вот пример 2-х грубых ошибок, которые были исправлены верно. Но фраза, конечно, очень простая сама по себе.

      Кстати, по мере использования заметил еще одну интересную фишку: модель распознавания речи тоже исправляет текст, фиксит артикли и окончания. Что логично, там тоже языковые модели в основе.


  1. KarinaKm
    00.00.0000 00:00

    Здравствуйте! А вы не хотите сделать что-то вроде подписки на приложение? Я бы с удовольствием купила подписку на месяц, чтобы изучать английский подобным способом. И друзьям бы тоже посоветовала)


    1. AlexBryl27 Автор
      00.00.0000 00:00

      Здравствуйте. Надо подумать, изначально не планировал делать такое приложение открытым


    1. SergeyT-hh
      00.00.0000 00:00

      Если вы планируете разговаривать с людьми, то от тренировки разговоров с людьми все равно не обойтись. Сейчас короткие разговоры с англоговорящими учителями, которые корректируют ваши ошибки и дают рекомендации на что обратить внимание стоят от 75 руб за 15 мин. Для снятия первого разговорного барьера хватит 5-10 разговоров, но это уже первый шаг к пониманию людей)
      Автор классную штуку сделал, но для разговорной практики вряд ли это сильно полезно для всех.


  1. MSid
    00.00.0000 00:00

    Меня смущает the people... Но у меня не очень с грамматикой)