Tag Archive | OPW

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
*Numbers
*Alphabet
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
*Proverbs
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 conf.KDE.in 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:

mock0

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:

mock5

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.

‘Artikulate’-ing it right.

Around a month back, I came across a very interesting project in KDE’s list of ideas for OPW (Outreach Program for Women) –> Artikulate. It is a basically a pronunciation trainer which aims at improving and perfecting the pronunciation skills of the user, thereby helping in speaking foreign languages with ease. Artikulate is currently in the KDE Edu Playground i.e., it is still under development and has not been released yet.

How Artikulate is supposed to work:
The project contains different courses in various languages which in turn offer a variety of units (scenarios) containing phrases of all lenghts like words, expressions, sentences and paragraphs. The idea is to have recordings of each phrase by native speakers and related phonemes will be tagged to every phrase. The user can now listen to the recordings and try speaking it the same way, recording her own attempts in the process. By comparing the two recordings, she can correct her pronunciations in that specific language.

Due to my interest in Language Studies and Foreign Languages, the idea immediately caught my attention and under the guidance of Andreas Cord-Landwehr (IRC Nick: CoLa), I started submitting patches and contributing to Artikulate. My contributions to Artikulate so far are:

1. I created an Unit Test that tests all the language files and checks the validation of the schema and also checks if a language file contains the same ‘phoneme id’ more than once.

2. Artikulate initially supported two languages (French and German). I added six other languages (phonologies) to the project, namely:
*Spanish
*Italian
*Dutch
*Catalan
*Greek
*English (General American)

Currently, I am working on adding Bengali which is my mother tongue to the list of languages.

Also, thanks to the last commit, Marathi got added by Rohini Lakshane to the list of languages in Artikulate making a total of nine languages at present. 🙂

I am applying for the Outreach Program for Women, 2013 for KDE with Artikulate. I will be adding my proposal here shortly. BTW, the good news is that this year KDE is participating in OPW for the very first time with KDAB as the sponsor offering one internship. \o/ Hoping for the best. ^_^