My OPW 2013 Proposal for KDE.

One fine day, Tina wakes up and receives an offer letter from one of the most prestigious colleges in Germany. It has been her dream since she was twelve which has finally come true. But, the offer letter states that two of her lectures will be in German. Now Tina, who is born and brought up in India took classes in German an year ago which made her capable of reading, writing and understanding the language with ease but faces a real tough time trying to speak the language herself. She has very less time at hand and does not want to take any more classes now. So what does she do?
The answer to her problem is Artikulate. She opens the program and selects ‘Deutsch’ (German) as her language and proceeds with the courses provided. After completing each course, the program notifies her about her progress which helps her to perfect herself in speaking German.

How Artikulate is supposed to work:
The project contains different courses in various languages which in turn offer a variety of scenario units. A scenario unit consists of phrases of all lengths like words, expressions, sentences and paragraphs that are most likely to be required in the particular scenario (mentioned in the unit) in a foreign land. The idea is to have recordings of each phrase by native speakers and related phonemes (any of the perceptually distinct units of sound in a specified language that distinguish one word from another) will be tagged to every phrase. Tina can now listen to the recordings of the phrases and the phonemes and try speaking them the same way, recording her own attempts in the process. By comparing the two recordings, she can correct her pronunciations in German (the language of preference in this case).

My main goal in this project is to assist in the first release of Artikulate which basically consists of four sub-projects as given below:

Task 1: Course Files:
This is the most important task of all and consists of the following aspects:

1. The current course skeleton (Artikulate Basic Course) consists of 3 units which are incomplete as of now, namely:
*On the Street
My target is to complete the above three units and implement some more units like:
*In a Restaurant
*At a Party
*On a date
*In an Interview
*At a Bank
*In an Emergency
and make sure that they are complete so as to have a total of around 500 to 1000 phrases in all. A complete unit shall have the following features:
*Phrases of all four different types (depending on their lengths): word, expression, sentence, paragraph shall be present.
*Covers all the relevant phrases for the scenario given by the respective unit.
*Contains enough phrases so that the user spends atleast 10 minutes testing an entire unit.
A few examples for an unit like ‘In a Restaurant’ would be as follows:
*Word: Lunch, Dinner, Buffet, Starter, Main-course, Desert.
*Expression: “Delicious!”, “Yummy!”, “Lip smacking!”.
*Sentence: “I would like to book a table for two.”, “We would like to have two prawn cocktails and risotto.”
*Paragraph: “This restaurant has been my favourite since I was six. I remember coming here every weekend with my parents and having lamb kebabs with the impeccable coriander chutney. They expertise in Indian cuisine.”

2. Currently, Artikulate supports eight languages with no or incomplete courses. The idea is to build up on the basic course skeleton and create courses for each language using units already present in the course skeleton by the translation of every phrase. For example, the unit ‘In a Restaurant’ becomes ‘একটি রেস্টুরেন্টে’ in Bengali and ‘In einem Restaurant’ in German and the word ‘Dinner’ in the same unit becomes ‘সান্ধ্যভোজন’ in Bengali and ‘Abendbrot’ in German.

3. Another vital part of the project is the recordings of all the phrases and tagging of related phonemes for every phrase. For this task, help of native speakers or speakers with sound knowledge of the pronunciation of a particular language is essential. I plan on taking help from the KDE Community as it has contributors from all over the world. I feel community meetups would be the best place for this task. I have thought of organising an event during Akademy, 2013 along with my mentor so as to attract native speakers from the KDE Community to contribute to Artikulate with recordings of phrases and tagging of phonemes. Long term goal is to arrange similar events at national/regional level KDE meetups like and others. Here tagging of phonemes for a phrase refers to tagging all the phonemes that are used atleast once in the particular phrase from the the list of phonemes provided. For example, for the English word ‘bed’, the phonemes that will be tagged are [b], [ɛ], and [d].

4. Also, I plan on adding Bengali which is my mother tongue to the list of languages very soon. So, I will be creating the course files and do the recordings of the phrases and the tagging of related phonemes for Bengali within the project period. For the recordings, I also plan on asking some of my friends and acquaintances, who are native Bengali speakers, to lend their speech so as to have a good variety of recordings.

By the end of OPW, the basic course skeleton shall be provided in at least two languages, German and Bengali for example, by human translators and contributors (native speakers) in the KDE Community and localization teams.

Task 2: Documentation:
My target is to create a handbook (manual) at the Userbase Wiki for Artikulate with the following chapters:
1. For Users: How to use the program i.e., selecting courses, listening to the recordings provided, recording their own attempts and, improving their pronunciation by comparing the two.
2. For Contributors:
*How to write language files. A language file is an XML file contained in the artikulate/data/languages directory which contains the phonological specifications of that particular language.
*How to create new courses using the Course Editor.
*How to edit the course skeleton and add new units to it using the Course Editor.
*How to set the path to the checkout of ‘artikulate-data’ in the “Settings” configuration dialog.
Planned Outcome: A complete manual for Artikulate by integrating this handbook into the program.

Task 3: Workflow Planning:

For the task of workflow planning, I plan to create a .txt file in the main directory of the Artikulate project which will contain written details of what features will be added, what changes will be made and when and how team Artikulate plan on implementing them. It will be updated with every release. This will help in the smooth functioning of the Artikulate team. Also, users and contributors who will clone the project and build it from source will get an idea on the development process of Artikulate and can easily find out the optimum way to contribute to the project.
The file will contain workflows on the following defined:
*Making a new release of courses
*Extending the course skeleton and then updating the course files of the various languages accordingly

Task 4: User Interface:

Problem: Tina, in order to improve on her pronunciation skills in German, opens Artikulate. The very first screen she comes across, contains the list of languages supported by the program from which she can choose the language of her preference. Since, in Artikulate every language is in its respective scripts, Tina instantly recognises ‘Deutsch’ to be German as she is able to read the language, but has a hard time understanding what other language options like ‘Ελληνικά’ mean.

Solution: The proposed solution to such similar situations is shown below:


Here, when Tina hovers her mouse pointer over any of the language options, she gets further information about the language in brief, Greek in this case. In the future, the information about languages might be fetched automatically from websites like Wikipedia instead of writing it down for every language.

Problem: After selecting the desired language and a corresponding course, Tina selects a scenario training unit of her choice. Now, she finds a screen where there are phrases of four types: word, expression, sentence and paragraph. After listening to the recorded phrases, she tries speaking them in the same way, recording her own attempts in the process so that she can compare between the two recordings and correct herself. But, the problem that arises now is that except for her own discretion, there is no other way to evaluate her progress.

Solution: The simplest way to evaluate Tina’s progress is by keeping a track of the phrases that she tried and has been successful in mastering. This can be done in following way:
Beside every phrase there will be two buttons (options), ‘Thumbs Up’ which will denote that she has been able to master the phrase, and ‘Thumbs Down’ which will denote that she has not been able to master the phrase yet.
The program will keep a track of the number of phrases that Tina tried, marked ‘Thumbs Up’ or ‘Thumbs Down’ and the number of phrases she skipped so that after she clicks on the ‘Complete!’ button, the program will give her a feedback.
The feedback will look somewhat like this:


Future Work: Implementation of a ‘highscore’ system in the program which will be able to compare between two given recordings and mark the user accordingly. Also, once there are quite a number of courses available for every language, a difficulty level can be introduced to help the user select between the courses.


3 thoughts on “My OPW 2013 Proposal for KDE.

  1. I have just discovered your blog! I think it is full of great ideas for Artikulate. I think it will be great tow work together on this project!

  2. Great post but I was wanting to know if you could write a litte
    more on this subject? I’d be very thankful if you could elaborate a little bit further. Many thanks!

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s