LANGUAGE LEARNING ASSISTANT
The Howsoft language Learning Assistant for Linux helps you to familiarize yourself with the correct
pronunciation of a foreign language. You can collect data from any number of languages and
insert it into the program. Then, you can use the speech synthesizer ("eSpeak") to pronounce the
text with pauses between sentences or between individual words. You can also adjust the rendering
speed if necessary.
As you collect data for your language study, you create pages until they eventually form a book, which can be later saved as a single
compressed file. Each page has 2 columns in it which can be used in any way you want. However, as you can see from the example
shown above, I have put my native language text (English) in the left-hand column and my foreign language text (Italian) in the
right-hand column. To introduce or edit text, just click on the appropriate "Edit" button above the column. The text editor is fully UTF-8-
compliant, so you should not have any trouble pasting or typing text in any language:
The LiveCode and PureBasic modules are standalones, and should require no setup at all in Linux Mint. However, you will need to install the speech
synthesizer ("eSpeak") .
Choose the languages and voices you want to use in the drop-down lists at the tops of the columns. Most languages work excellently, but
a few of the languages are still under development. English, Portuguese and Italian, for example, are great, but Russian sounds like an
alien language from outer space!
To work in an ad-hoc way, just select a portion of text with the mouse and press the "Play Selected" button at the bottom. The control panel
below the "Play Selected" button enables you to work in a timed fashion. If you are going to work with whole lines of text, choose the
number of seconds you estimate a line to require in the "Line" dropdown menu: leave the "Word" timing at 0 (zero). Now, when you click
on the Run button:-
- the text will be spoken line-by-line from the beginning to the end. If you find that the silent gap between lines is insufficient for example, just
- make the necessary adjustment to the line timing, and begin again.
When the synthesizer is in run mode, a pause button appears in place of the run button, and you can use it to stop temporarily at the end of
the current line:
The run button appears again, and you can use it to resume listening from the point where you left off.
Please note that the STOP button also causes a "rewind", so when you decide to RUN again, it will be from the very beginning of the text.
Working with individual words instead of whole lines is exactly analogous. Choose the number of seconds you estimate a word to require
(taking into account the length of the longest word and the amount of silence required after it) in the "Word" dropdown menu, and then use
the controls (run, pause, stop, resume) as you would for whole lines.
Finally, if you need to adjust the rendering speed of the words or lines in the column, click on this:
The following panel will then appear:
This should be used with care, because when you are learning a foreign language, getting used to listening at normal speed is a good policy
if you are able to manage it.
Apart from what has already been explained about text editing, the rest of the buttons at the top are very self-explanatory I think, so I won't tire
you by going into all the little details of what you can very easily discover for yourself. One little thing though. When you export the collection
of pages you have made into a book, it will be compressed into a single file of the type ".IBF". It should be noted that such exported files are
only good for loading back (importing) into the Language Learning Assistant itself. This is because the page names have to be encoded in
base64 to get around the fact that Unicode strings cannot be used by the compression module available for the purpose in LiveCode. If you
look inside one of these compressed files, this is how the page names appear, which is not much good if you want to extract them directly
without decoding them first: