Рассмотрим две проблемы при изуче��ии иностранного языка. Это освоение грамматики и увеличение словарного запаса. Они не единственные, но важные. Про способы погружения в грамматику, на языке оригинала, можно прочитать в моей статье: «Уроки французского и пересоздание данных для изучения иностранного языка с помощью обучающей программы «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). Именно эти слова можно считать ключевыми, а если мы ограничимся только ими, то, все остальные будут – обычными словами.

Рис. 1. Первые двести наиболее часто встречающиеся (ключевые) французские слова.
Рис. 1. Первые двести наиболее часто встречающиеся (ключевые) французские слова.

Результаты впечатляют! Первые 33 подготовленных нами ключевых слова (с примерами) охватывают более 38% всех используемых слов языка в общей лексике! А, допустим, двести освоенных нами слов (примерно шесть уроков) французского языка составят почти 50% всех используемых слов! Поэтому, кажется, что запоминать их – есть смысл!

Правда, как всегда, в подобных случаях – есть нюансы. Просто учить эти слова, которые могут быть сокращениями и аббревиатурами, достаточно бессмысленно. Ибо значения этих ключевых слов – «бесконечно» разнообразны. Так, в онлайн-словарях, каждое из них может сопровождаться до ста и более вариантов примеров использования, демонстрирующих все нюансы грамматики, в данном случае, французского языка.

Поэтому, логично, если мы хотим хорошо освоить ключевые слова, мы должны запоминать примеры их использования. При этом, мы опять задействуем фактор полифункциональности. Набирая руками тексты различных фраз, слушая их озвучку и повторяя ее вслух, мы, попутно, учим и все слова в контексте. Соответственно, запомнив «намертво» эти 200 слов мы, реально, выучим на порядок больше, плюс будем знать возможные варианты их использования и нетривиальные комбинации.

Например, фраза:  « à la... » – « на манер...» у нас будет встречена дважды: для ключевого слова: « à » и для ключевого слова: « la », что позволит лучше запомнить её.

Таким образом, нам нужно подготовить данные на манерà la ») описанных в вышеуказанной статье. Для этого нам надо воспользоваться подходящим французско-русским словарем. Аналогично, подобную работу можно проделать и для других языков, например, английского. Но, это уже будет тема другой статьи.

При этом, что удобно, нам не нужно скачивать все страницы, допустим, выбранного онлайн-словаря. В данном случае, достаточно загрузить лишь несколько десятков из них из них (для первого урока – только 33, что даст порядка тысячи примеров).  А это, при большом желании, можно сделать даже вручную, поскольку загружать целиком все данные из сайта может быть не слишком оптимальным решением, хотя бы из-за средств защиты (капча, блокировка избыточной активности и т.п.). А вытащить текстовые данные из html-страницы (например,  https://big-fr-rus-fr-dict.slovaronline.com/20407-de ), можно даже в браузере (рис. 2).

Рис. 2. Копирование текстовых данных из страницы онлайн-словаря для ключевого слова.
Рис. 2. Копирование текстовых данных из страницы онлайн-словаря для ключевого слова.

Например, копирование через буфер обмена данной страницы, с французским словом « de », даст нам более 150 строк чистого текста или около 10 килобайт. Вот и спрашивается, зачем нам копировать все страницы, словаря, если примеры, демонстрирующие применение только одного ключевого слова, дают нам сотню фраз с переводами, слова из которых можно запоминать в контексте?

При этом, мы можем не показывать метаданные, т.е., объяснения по использованию слов, поскольку они сильно перегружают структуру данных и их восприятие. А мы стремимся, на первом этапе обучения, использовать только грамматически однородные порции данных.

Следует еще сказать, что используемый нами онлайн-словарь, хоть и объёмный, но, тем не менее, может не давать примеры для некоторых категорий слов. Например, для слова: 12 « est » (рис. 3).

Рис. 3. Перевод  для ключевого слова: 12 « est », как редкого существительного, а не частой формы глагола « être ».
Рис. 3. Перевод  для ключевого слова: 12 « est », как редкого существительного, а не частой формы глагола « être ».

В данном случае, словарь даёт только редкие формы существительного « est », хотя основная категория у этого слова – форма глагола « être » – аналога английского « to be », для 3-го лица, единственного числа.

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

Второй момент, который возникает при использовании подобного онлайн-словаря, связан с тем, что, некоторые слова могут иметь более одной страницы. Например, слова: 47 « sans » и 55 « sous » (рис. 4-5).

Рис. 4. Две html-страницы для французского слова 47 « sans ».
Рис. 4. Две html-страницы для французского слова 47 « sans ».
Рис. 5. Две html-страницы для французского слова: 55 « sous ».
Рис. 5. Две html-страницы для французского слова: 55 « sous ».

Часть Первая – Результирующая

Полученные результаты доступны по ссылкам:

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).

Рис. 6. Полученные данные в режиме «Конспект».
Рис. 6. Полученные данные в режиме «Конспект».

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

Рис. 7. Третий вариант генерируемого html-текста.
Рис. 7. Третий вариант генерируемого html-текста.

Часть Вторая – Техническая

Для генерации данных мы сначала подготавливаем текст, на иностранном языке (в архиве, это файл «FrText.txt», состоящий из обычных текстовых строк, в кодировке UTF-8.

Затем мы делаем озвучку каждой строки с помощью нашего скрипта «Piper.py», который запускаем с помощью командного файла «Piper.cmd».

На первом этапе, создаются текстовые файлы в каталоге «Txt», каждый из которых содержит ровно одну строку исходного текста. Это делается по причине того, что командный процессор плохо работает с кодировкой UTF-8. Но, если данные поступают из внешнего файла, то тогда все нормально.

Кроме текстовых файло��, создается командный файл «FrText.cmd» (рис. 8).

Рис. 8. Командный скрипт «FrText.cmd» для генерации звуковых файлов.
Рис. 8. Командный скрипт «FrText.cmd» для генерации звуковых файлов.

Вот именно он, непосредственно, и генерирует нужные нам mp3-файлы в каталог с аналогичным именем. При желании, вы можете устанавливать свои настройки для звука.

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

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

Рис. 9. Альтернативный командный скрипт «FrText.cmd» для генерации звуковых файлов.
Рис. 9. Альтернативный командный скрипт «FrText.cmd» для генерации звуковых файлов.

Заметим, что он тоже сгенерит звуковые файлы, но, если в тексте появятся не латинские символы, то эффект будет непредсказуемым.

Также укажем, что строки с разделителями (у нас таковые используются явно в виде символов «•••») замещаются звуковыми файлами с тишиной, длительностью 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 .

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

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

Выводы

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