Рассмотрим две проблемы при изучении иностранного языка. Это освоение грамматики и увеличение словарного запаса. Они не единственные, но важные. Про способы погружения в грамматику, на языке оригинала, можно прочитать в моей статье: «Уроки французского и пересоздание данных для изучения иностранного языка с помощью обучающей программы «L'école»», в https://habr.com/ru/articles/972594/ .
Там идея простая. Мы берем хороший учебник на языке оригинала, разбиваем текст на короткие смысловые фразы, снабжаем их фонетическим слогоделением и буквальным контекстным переводом (БКП). Затем, озвучиваем данные, например, с помощью TTS, для, в данном случае, обучающей программы «L'école» и создаем двуязычные html-тексты с транскрипцией (фонетическим слогоделение) или, другими словами, небольшую книгу в формате html.
Идея изучения грамматики основана на двух принципах:
– Мы читаем, громко, вслух фонетическую транскрипцию (предварительно осваиваем фонетический алфавит с помощью представленных уроков) и смотрим подстрочный перевод. Это для html-книг. А при работе в обучающей программе, мы можем, при желании, еще набирать текст руками (используя метод «запоминание руками», в режиме «Конспект»), слушать и проговаривать вслед интерактивную озвучку. При этом, не обязательно даже стремиться запоминать текст, при наборе его руками и повторении озвученной речи, уроки запоминаются «сами собой», особенно, если к ним периодически возвращаться.
– В таком случае, мы выигрываем дважды, осваиваем иностранный текст как таковой и, заодно, запоминаем его содержимое, то бишь, собственно грамматику изучаемого языка.
Иначе говоря, полифункциональность, может быть, выгоднее монофункциональности.
Это неплохой метод изучения языка взрослыми, вопрос только в оперативной подготовке данных. В идеале, при коллективном творчестве, подобными данными можно будет пользоваться совместно.
В указанной статье говорилось также, что слова мы учим в контексте изучаемых фраз. Тем не менее, может иметь смысл, также независимое освоение иностранных слов.
Здесь приходит на ум «очевидное» решение – запоминать иностранно-русский словарь слов. Многие из нас с этим сталкивались. Да и на «Хабре» участники, не раз, писали, как много слов они выучили непосредственно по словарю.
В какой-то мере, эта тема меня тоже заинтересовала, и я решил посмотреть, как практически лучше учить «голые» слова?
После некоторых экспериментов, пришел к пониманию, что имеется смысл делить, условно, все иностранные слова на две группы:
1. Ключевые слова и
2. Обычные слова.
Ключевые слова – это некоторое множество наиболее часто используемых слов языка, например, в общей лексике. Сколько их будет – неважно, столько, сколько вы готовы выучить. При этом остальные слова будем называть обычными.
Идея заключается в том, что ключевые слова мы учим капитально, а обычные – в контексте используемых примеров их применения.
Хорошо, давайте рассмотрим первые, скажем, двести наиболее часто (согласно источника: «Lexique des formes fléchies du français - Grammalecte v7.0», с учетом их доступности в используемом онлайн-словаре), встречающиеся французские слова (рис. 1). Именно эти слова можно считать ключевыми, а если мы ограничимся только ими, то, все остальные будут – обычными словами.

Результаты впечатляют! Первые 33 подготовленных нами ключевых слова (с примерами) охватывают более 38% всех используемых слов языка в общей лексике! А, допустим, двести освоенных нами слов (примерно шесть уроков) французского языка составят почти 50% всех используемых слов! Поэтому, кажется, что запоминать их – есть смысл!
Правда, как всегда, в подобных случаях – есть нюансы. Просто учить эти слова, которые могут быть сокращениями и аббревиатурами, достаточно бессмысленно. Ибо значения этих ключевых слов – «бесконечно» разнообразны. Так, в онлайн-словарях, каждое из них может сопровождаться до ста и более вариантов примеров использования, демонстрирующих все нюансы грамматики, в данном случае, французского языка.
Поэтому, логично, если мы хотим хорошо освоить ключевые слова, мы должны запоминать примеры их использования. При этом, мы опять задействуем фактор полифункциональности. Набирая руками тексты различных фраз, слушая их озвучку и повторяя ее вслух, мы, попутно, учим и все слова в контексте. Соответственно, запомнив «намертво» эти 200 слов мы, реально, выучим на порядок больше, плюс будем знать возможные варианты их использования и нетривиальные комбинации.
Например, фраза: « à la... » – « на манер...» у нас будет встречена дважды: для ключевого слова: « à » и для ключевого слова: « la », что позволит лучше запомнить её.
Таким образом, нам нужно подготовить данные на манер (« à la ») описанных в вышеуказанной статье. Для этого нам надо воспользоваться подходящим французско-русским словарем. Аналогично, подобную работу можно проделать и для других языков, например, английского. Но, это уже будет тема другой статьи.
При этом, что удобно, нам не нужно скачивать все страницы, допустим, выбранного онлайн-словаря. В данном случае, достаточно загрузить лишь несколько десятков из них из них (для первого урока – только 33, что даст порядка тысячи примеров). А это, при большом желании, можно сделать даже вручную, поскольку загружать целиком все данные из сайта может быть не слишком оптимальным решением, хотя бы из-за средств защиты (капча, блокировка избыточной активности и т.п.). А вытащить текстовые данные из html-страницы (например, https://big-fr-rus-fr-dict.slovaronline.com/20407-de ), можно даже в браузере (рис. 2).

Например, копирование через буфер обмена данной страницы, с французским словом « de », даст нам более 150 строк чистого текста или около 10 килобайт. Вот и спрашивается, зачем нам копировать все страницы, словаря, если примеры, демонстрирующие применение только одного ключевого слова, дают нам сотню фраз с переводами, слова из которых можно запоминать в контексте?
При этом, мы можем не показывать метаданные, т.е., объяснения по использованию слов, поскольку они сильно перегружают структуру данных и их восприятие. А мы стремимся, на первом этапе обучения, использовать только грамматически однородные порции данных.
Следует еще сказать, что используемый нами онлайн-словарь, хоть и объёмный, но, тем не менее, может не давать примеры для некоторых категорий слов. Например, для слова: 12 « est » (рис. 3).

В данном случае, словарь даёт только редкие формы существительного « est », хотя основная категория у этого слова – форма глагола « être » – аналога английского « to be », для 3-го лица, единственного числа.
Однако, для выяснения подобных нюансов, мы будем ориентироваться на грамматику французского, на французском языке, о чем говорилось выше.
Второй момент, который возникает при использовании подобного онлайн-словаря, связан с тем, что, некоторые слова могут иметь более одной страницы. Например, слова: 47 « sans » и 55 « sous » (рис. 4-5).


Часть Первая – Результирующая
Полученные результаты доступны по ссылкам:
http://lecole.free.nf/Data/FrRuFreqDict.zip – скрипты, для генерации данных и сами данные, как исходные, так и результирующие.
http://polezp.narod.ru/Data/FrRuFreqDict_nodata.zip – тоже самое, только без сгенерированных данных, которые можно получить воспользовавшись прилагаемыми скриптами.
https://my.mail.ru/mail/emmerald/video/_myvideo/22.html – ролик, показывающий работу обучающей программы «L'école», в режиме «Видео», для полученных данных (файл: «FrRuFreqDict-1.db», который можно разместить в каталоге программы: «Lecole101\DataBase\Французский\Dict\FrRuFreqDict-1.db»).
https://dzen.ru/video/watch/695828ebd2c782440c83196d - то же самое видео на другом источнике.
Всего, на данном этапе, мы подготовили первую порцию из 33-х ключевых слов, содержащих порядка тысячи примеров их использования (рис. 6).

Для работы вне программы можно использовать четыре варианта html-данных из каталога Html (после их генерации). На рис. 7 показан третий вариант.

Часть Вторая – Техническая
Для генерации данных мы сначала подготавливаем текст, на иностранном языке (в архиве, это файл «FrText.txt», состоящий из обычных текстовых строк, в кодировке UTF-8.
Затем мы делаем озвучку каждой строки с помощью нашего скрипта «Piper.py», который запускаем с помощью командного файла «Piper.cmd».
На первом этапе, создаются текстовые файлы в каталоге «Txt», каждый из которых содержит ровно одну строку исходного текста. Это делается по причине того, что командный процессор плохо работает с кодировкой UTF-8. Но, если данные поступают из внешнего файла, то тогда все нормально.
Кроме текстовых файлов, создается командный файл «FrText.cmd» (рис. 8).

Вот именно он, непосредственно, и генерирует нужные нам mp3-файлы в каталог с аналогичным именем. При желании, вы можете устанавливать свои настройки для звука.
Можно, при желании, вместо mp3 генерировать wav-файлы и их объединение с паузами, между фразами (см. настройки в скрипте «Piper.py»). Затем этот файл можно обработать в редакторе «Audacity» и, потом, получить аналогичные mp3-файлы. При этом их общий размер, у меня, оказался на треть меньше, а качество звучания чуть-чуть (почти незаметно) хуже. Но, этот путь требует больших телодвижений (я использую для этого пару дополнительных скриптов), поэтому, особого смысла я в нем не вижу.
Если вы имеете дело только с английским текстом, то для его озвучки (при использовании подходящих моделей, которые нужно будет, при необходимости, скачать) можно не создать кучу текстовых файлов с одной-единственной строкой, а использовать их текст непосредственно в генерируем скрипте (для этого надо, в «Piper.py», разблокировать функцию «LineProcessingFromEcho()» и использовать ее вместо аналогичной функции «LineProcessingFromTxtFile()»). В результате, получим командный файл «FrText.cmd» как на рис. 9.

Заметим, что он тоже сгенерит звуковые файлы, но, если в тексте появятся не латинские символы, то эффект будет непредсказуемым.
Также укажем, что строки с разделителями (у нас таковые используются явно в виде символов «•••») замещаются звуковыми файлами с тишиной, длительностью 500 миллисекунд. Нумерация строк, при этом, не нарушается. Хотя, обычно используется только один «пустой» файл: «00000.mp3».
После того, как мы получим mp3-файлы (для первого варианта – в каталоге «Mp3», который мы переименуем в каталог «FrRuFreqDict-1») и можем перейти ко второму этапу.
Запускаем командный файл «ReCreateDB.cmd», аналогичный скрипту, в цитируемой статье, который создаст искомый файл базы данных «FrRuFreqDict-1.db», формата «Sqlite3», для нашей обучающей программы. Его можно разместить, как уже упоминалось, в каталоге: «Lecole101\DataBase\Французский\Dict\FrRuFreqDict-1.db».
Для создания этого файла, кроме звука используется и, естественно, текст, из файла: «FrRuFreqDict-1.txt», который мы создаем путем копирования, через буфер обмера, из первого листа в файле: «Data\FrRuFreqDict.xls» (берем только первые 1094 строки плюс заголовок, но без последней колонки с номерами, как это было описано в цитируемой статье)
Аналогично, из второй страницы Эксел-файла копируем текст в похожий файл: «Data\FrRuFreqDict-1.txt», для создания четыре варианта html-«книг», как уже говорилось выше. Для этого используем скрипт «TextHtmlCreater.cmd», эквивалентный скрипту из прошлой статьи.
Таким образом, мы получили необходимые данные для своего первого урока (33 ключевых слова из 200-х намеченных) по работе с примерами использования наиболее часто встречающихся слов, во французском языке.
Что касается установленного в Питоне, бинарного файла «piper.exe», размером, порядка, 108 килобайт, то по нему можно сказать, что это sfx-архив, с небольшим скриптом Питона, который получает управление сразу после распаковки (во временный каталог). Вот его содержимое:
import sys
from piper.__main__ import main
if name == '__main__':
if sys.argv[0].endswith('.exe'):
sys.argv[0] = sys.argv[0][:-4]
sys.exit(main())
На «Гитхабе» можно встретить множество проектов на тему «пайпера». Некоторые релизы имеют запредельные размеры, которые запустятся не на любом компьютере. Моей техники оказалось недостаточно, чтобы «переварить» их, может у вас получиться рассказать о них подробней.
У меня, похоже, установлен минималистский «piper.exe», из пакета Питона «piper-tts» (экспериментировал много, поэтому, за точность не ручаюсь). Есть также прототип кода, который не использует «piper.exe», а работает с конфигурационными данными (json-файл) звуковой модели непосредственно. Но, там больше технических нюансов, с которыми лень разбираться, хотя какие-то результаты получил.
Используемая оффлайн-модель французского языка «fr_FR-siwis-medium.onnx», доступна, в числе других, на: https://huggingface.co/rhasspy/piper-voices/tree/main/fr/fr_FR/siwis/medium .
При подготовке транскрипции и слогоделения пользовался бесплатными ИИ-сервисами. Правда, все они не хотят делать синтаксическое слогоделение соответствующее фонетическому слогоделению, т.е., ориентируются только на письменные переносы, которыми, сейчас, мало кто пользуется. Поэтому, приходиться удалять «лишние» слоги вручную. В какой мере, этот процесс можно даже автоматизировать, но, это уже для следующих уроков.
Естественно, при больших объемах данных неизбежны ошибки, однако, возможность их исправления описана в моей предыдущей статье.
Выводы
Самым важным, для меня, в этих экспериментах по созданию обучающих данных, для изучения иностранного языка, оказалась возможность генерации неплохого звука, непосредственно, на собственном компьютере. Это дает большие возможности, ограниченные только собственной фантазией.
Комментарии (12)

Apoheliy
03.01.2026 22:23Сарказм с долей сарказма:
Что у автора в голове, если он для статьи указал хаб C++?
С другой стороны: о чём это я? Это же ИванИваныч статью писал! Ему без разницы, что накидывать.

JordanCpp
03.01.2026 22:23Что у автора в голове, если он для статьи указал хаб C++?
В С++ тоже ключевые слова на латинице, шах и мат:))

Emelian Автор
03.01.2026 22:23Что у автора в голове, если он для статьи указал хаб C++?
Я ожидал подобной критики, что даёт мне повод объяснить.
Базовая обучающая программа «L'école, v. 101», доступная вместе с демо-данными на https://disk.yandex.ru/d/5yjYP4JP1aVnIw (ссылка указана в цитируемой статье), написана под «Windows», в «Visual Studio C++», естественно, на языке С++.
Да, программа опубликована, но, пока, без исходников. Это всего лишь вопрос времени. Просто, не хочется показывать не слишком оптимальный код, чтобы не давать лишнего повода для критики, которых и без этого хватает.
А С++ составляет идеологию моего программирования, даже если я пишу на Питоне или «1С». Поэтому, не взыщите, хаб этот для меня принципиально важен.

IlyasA74
03.01.2026 22:23Примерно на 2-ой минуте видео несколько раз фигурирует сокращение "qn". Это cлово так не произносится - это ошибка. A la, au, aux - просто предлог "в", "с", что-то такое.
Методика с фонетической транскрипцией выглядит очень спорно. Фонетическая транскрипция в данном случае - лишняя ненужная информация.
Таблица - жертва парсинга, как туда попало слово "правительство"? Бессвязный набор фраз - что это вообще такое? Это нужно будет заучивать?
Что в конце концов делает этот страшный код на пайтоне?
Возьмите, что-ли, какой-нибудь учебник французского языка и посмотрите, какие там главыи в каком порядке следуют, чтобы понимать, как нужно учить язык sans crainte sans mélancolie

Emelian Автор
03.01.2026 22:23Спасибо, за конструктивную критику, это всегда полезно!
Примерно на 2-ой минуте видео несколько раз фигурирует сокращение "qn". Это cлово так не произносится - это ошибка.
Согласен! В данном случае, упор делался на локальную озвучку, как таковую. А ошибки можно и нужно исправлять, постепенно. Я сам, при наборе фраз руками в обучающей программе, постоянно нахожу ляпы во французской транскрипции, даже от французского «Мистраля». По мере сил, исправляю. Пользователи могут использовать мою предыдущую статью, где речь шла редактировании данных, в том числе, на уровне замены звуковых файлов. Показан алгоритм разборки данных и их пересборки (после модификации).
По сути, если в статье https://habr.com/ru/articles/972594/ речь шла о редактировании данных, то в этой о возможности создания данных с «нуля». Варианты: интерактивные данные для программы, создание видео путем видеозахвата в режиме «Видео» и создание четырех форматов html-«книг». Соответственно, кто мешает создать собственные уроки на свой вкус?
Что касается неправильного произношения голосовым движком сокращения «qn» и подобных, то, можно заменить его на полное значение «quelqu'un» и переозвучить. При подготовке следующих уроков я, думаю, так и делать. Как вариант, можно их вообще убрать и заменить троеточием, которые, движок игнорирует.
A la, au, aux - просто предлог "в", "с", что-то такое.
« La » – определённый артикль женского рода, имеет с десяток вариантов использования, в цитируемом онлайн-словаре.
Слов « a », « au == à le» и « aux == à les » среди представленных ключевых слов нет. Есть одиночный « à » со множеством значений и примеров, куда входят упомянутые вами « au » и « aux ».
Методика с фонетической транскрипцией выглядит очень спорно. Фонетическая транскрипция в данном случае - лишняя ненужная информация.
Вы умеете читать французский текст без транскрипции? Однако, многие этого не умеют, даже обижаются, когда я говорю, что для её изучения достаточно моих двух уроков (39 «чистых» фонетических звуков и порядка тысячи примеров их использования). Хотя, кто вам мешает делать свои данные, без транскрипции?
Таблица - жертва парсинга, как туда попало слово "правительство"?
Я же написал, что статистика слов взята из «Lexique des formes fléchies du français - Grammalecte v7.0». Её легко найти на Гитхабе. Правда, некоторых частых слов в используемом онлайн-словаре нет, а некоторые дублируются (одни и те же цифры, но для разных частей речи одного слова, что говорит, что имеется в виду одно значение, для всех разных грамматических форм вместе взятых).
Бессвязный набор фраз - что это вообще такое? Это нужно будет заучивать?
Это же примеры использования! Просто, важно понимать, что одно и тоже слово может выполнять очень разные функции в предложении. А смысл примеров в том, что они, во-первых, короткие, а, во-вторых, даны с переводом. Так что ответственность переадресую к их авторам. В прошлой статье шла речь о «связной» и вполне осмысленной французской грамматике на французском языке. Как говорится: «Любой каприз за ваши деньги! :) ».
И потом, я не профессионал и данные не профессиональны, но, дают очень хороший трамплин для генерации ваших собственных идей.
Что в конце концов делает этот страшный код на пайтоне?
Это исполнимый скрипт, который автоматически запускается при вызове главной нашей утилиты: «piper.exe», которая представляет собой самораспаковывающийся sfx-архив в этом exe-файле.
Просто интересно знать, как маленькая программа делает большую работу? Примеры собственных сборок «piper.exe» на Гитхабе (на сотни мегабайт бинарых файлов) у меня на компьютере даже не запускаются, мол, подавай им более крутое «железо» и ОС.
Как я писал в статье, можно работать с голосовыми движками напрямую, без «пайпера», но возни больше и мне этот путь понравился меньше.
Возьмите, что-ли, какой-нибудь учебник французского языка и посмотрите, какие там главыи в каком порядке следуют, чтобы понимать, как нужно учить язык sans crainte sans mélancolie
Я же дал в цитируемой статье архив: https://disk.yandex.ru/d/3zyxUBUU6eyc2A на пять уроков:
001-FrAlphabet138.db – алфавит, с описанием и озвучкой, на языке оригинала.
002-PhonSounds39.db – произношение 39-ти звуков фонетического алфавита.
003-PhonWords991.db – озвучка коротких слов, с транскрипцией, где каждый фонетический звук рассматривается в составе слов, количество которых, в нашем уроке, составляет, примерно – 25 на каждый звук, за исключением редких слов, со звуком « x », которых всего три.
004-Preface135.db
005-ElementsOfSpeech317.db
4-й и 5-й уроки, это начальные разделы из, в данном случае, французской грамматики, на французском языке, представленные, также, в html-формате, в нескольких вариантах, для каждого текста.Там используется неплохой учебник грамматики на языке оригинала. Учим не только французские фразы, но и их содержимое. Вы считаете, что этот путь хуже предлагаемого вами?
Еще раз. В прошлой статье идет упор на грамматику, в этой на словарный запас. Попутно, рассказываю как модифицировать обучающие данные и создавать их с нуля. Что не так?

Jijiki
спасибо интересная таблица и погружение, интересно, если бы можно было написать древне китайские слова, те самые 36 тысяч иероглифов, тоесть самых редких на карточки, наверняка такое приложение уже есть, кстати, вы привели пример с est` и sous, в китайском точно есть, в японском не помню, такие слова из которых по монадам, на одном и том же слове можно целое предложение сказать - ну не совсем одном и том же слове, иероглифы, конечно разные будут, просто чтение уникальное )) вспомнилось, блин классно
vadimr
Это разные китайские слова, конечно, просто они произносятся одними и теми же звуками. В китайском действительно часто употребляются слова, читающиеся shi в одном из тонов, например, глагол "быть", существительное "дело", существительное "час", числительное "десять" и т.д.
А для изучения китайских слов по карточкам могу рекомендовать приложение Hanzii Dict.