Anki набридла — зробив собі подкасти для вивчення слів (LLM + sherpa TTS локально в браузері)

💡 Усі статті, обговорення, новини про Front-end — в одному місці. Приєднуйтесь до Front-end спільноти!

Не знаю як конкретно у вас, але в мене є проблема:

я ніби як і знаю англійську, але регулярно трапляються якісь специфічні ідіоми, специфічні слова, яких я не знаю

Я вирішив такі слова виписувати. І якось їх запам’ятовувати.

Як?

Я для себе обрав:

  • через інтервальне повторювання в anki
  • слухаючи власні LLM-generated подкасти для зазубрювання саме тих слів коли зайняті руки

Для створення anki-файлів (де є слово, його переклад, ілюстрація, звучання) я навайбкодив свою апку. Сенс такий, що я вставляю список слів, тоді програмка посилає запит на LLM, та присилає переклад і речення з прикладами, тоді апка посилає запит на API якогось стоку з картинками (таким чином бере ілюстрацію), і на фіналочку з допомогою text to speech двигуна генерує звучання. Пакує все це в один файл, я в ції же програмці за потреби його редагую, скачую, вставляю в anki і вчу.

Та програмка працює дуже криво, потребує доопрацюавння і про неї я тут більше розказувати не буду.

Другий додаток — це програмка, яка генерує подкасти англійською з акцентом на вивчення тих конкретних слів.

Ось як воно працює:

1.Ви вставляєте свій список слів.

---

2. Запускаєте для цього списку генерацію перекладів. Генерацію перекладів тобто додаток посилає запит до LLM і та присилає список можливих значень і для кожного слова для кожного значення того слова генерує кілька речень як приклад.

При цьому ви можете вибрати як платну просунуту LLM модель, так і безкоштовну модель і з цією задачею вона буде справлятись чесно кажучи майже нічим не гірше за платну модель.

Ви також можете самі вибрати скільки прикладів до кожного значення слова потребуєте.

Можете запускати генерацію лише для вибраних слів чи й лише для одного слова, видаляти слова / значення / приклади і додавати. Вайбкодив я для себе і робив щоб було зручно.

---

3. Запускаєте генерацію подкасту на основі тих перекладів.

Вибираєте слова, які повинні увійти до подкасту, клікаєте кнопочку «Generate soundtrack». Додаток запускає локально у вас на комп’ютері sherpa (опенсорсна модель для генерації звуку з тексту, тобто опенсорсна text-to-speech модель). І тоді пропонує вам скачати 2 файли:

  1. .mp3 файл
  2. .srt файл (субтитри до аудіо)

Потім ці два файли скидуєте на телефон і запускаєте в себе на телефоні в Smart AudioBook Reader або будь-якій іншій програмці і слухаєте. Для зручності все поділено таймкодами щоб легко пролистати чи відлистати (таймкоди вбудовані в mp3 файл). А також можна бачити субтитри (якщо ви скачаєте також .srt файл).

При цьому зверху в налаштуваннях ви можете вибирати тривалість паузи між реченнями, між словами, швидкість голосу і навіть сам голос. Можете також встановити щоб було кілька голосів. Одне слово розказує один голос. Наступне слово інший голос. І так по колу.

⚠️ Важливо. Оскільки text-to-speech модель запускається у вас локально на вашому комп’ютері прямо в браузері, то по-перше треба почекати добрих 10хв поки браузер скачає ту модель з netlify (сама модель 100мб, але netlify дуже помало віддає ті файли). А потім під час генерації ще піде близько 30 секунд на кожне слово поки ваш комп’ютер згенерує аудіо.

⚠️ Нагадую. Ви не мусите одразу закидувати гроші на openrouter. Можете спокійно вибрати безкоштовну модель.
* але API ключ вставити все ж треба. Якщо боїтесь, що воно щось зжере, можете в налаштуваннях в openrouter встановити ліміт на використання API ключа 0.01 долара

⚠️ Хоч там і нема жодної авторизації за логіном і тдтп. Навіть api ключ опенроутера береже прямо в браузері в localStorage. Але генерація слів іде через хмарну LLM модель, тому ніяких чутливих даних в список слів вставляти не варто.

Ось приклад згенерованого подкасту:

on.soundcloud.com/bXC3ptT7faNIM8WpSt

Ось посилання на програмку

vocabcast-studio.netlify.app

Дайте знати якщо було корисно (типу там якийсь лайк або комент)

Ну і якщо маєте ідеї що можна покращити в цьому моєму підході або зустрічали уже відполіровані добре зроблені аналоги, то діліться в коментарях

👍ПодобаєтьсяСподобалось1
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Ох, подсадили меня на исследование темы. Ищу что-то что бы помогло сделать изучение в удовольствие — пока лучшее, что нашел фильмы и книги. Но, да, тоже необходимо и прорабатывать фразы или слова, чтобы запомнить. По програмке: интересно, немного потестил — никаких апи даже не добавлял — всё сработало и так. Речь достаточно естественная как для ИИ — я так понял получилось достигнуть частично за счет разбиения на ячеки частей определения и примеров, но как раз это и не оч. удобно, так как нужно компировать информацию частями или загонять в джейсон. Протестил еще piper — опенсорс текст-в-аудио. Там речь, получилась немного более деревянная, как по мне. Что за ЛЛМ-ку используете здесь? Сам пользуюсь, вы спрашивали, на андроиде — «English listening — 6 minut» — мне такой формат всё-же нравиться больше, хотя по эффективности, возможно и хуже, если цель прямо заучить конкретные фразы.

Щодо API ключа дивно. В мене без ключа не генерує речення з прикладами. Припускаю, що ви пропустили саме цей крок і додали переклади й речення вручну.

Щодо синтезу мови, то не згадаю зараз точну назву модельки, але якась із легких версій sherpa-onnx

Щодо звучання, то якщо мова про вставки типу The first word is .. the first meaning і т д вставок для повнішого переходу, то ці вставки вставляє js перед тим як відправити текст на озвучку. А от чому сама озвучка звучить набагато людяніше за звичайний робот, то того не знаю, то уже заслуга розробників тої шерпи

Цікаво, дякую. Було б цікаво мати можливість зберігати і ділитись словниками слів та ідіом.

Якщо під словником мати на увазі список слів і їхніх значень, то там можна експортувати й імпортувати

Якщо ж почну вайбкодити для цього можливість створювати бібліотеки, користувацький профіль і т д, то так далеко LLMка (нагадую, апка навайбкоджена) не дійде. Воно вже на цьому рівні почало трохи підтуплювати і ламати логіку там, де не треба. Плюс якщо зараз помилки просто неприємні, бо всі дані бережуться в localStorage, то з підключенням серверу буде гігантський ризик витоку персональних даних (а я не гороховський, порішати не зможу, та й совість у мене є). Ну а сам особисто той код колупати я звісно ж не буду. Тому тільки наявний import / export і пересилка скачаного json вручну

Підписатись на коментарі