Call for Recordings: American(US) English.

Hey everyone! As we, the Artikulate team, are targeting to release Artikulate this fall, we would like to invite more and more contributors to come help us with the project (which is aimed at helping users with their language learning/pronunciation skills). 🙂

This week, we would like to have contributors for our ‘American English’ Course. If you are a fluent American(US) English speaker, it would be great if you could please lend your voice for the recordings in the particular course. All you need to do is visit the Artikulate tech-base, wherein you will find the details for preparing your system to start contributing to Artikulate and the procedure for adding recordings to a language of your choice (American English, in this case). So, don’t wait, start recording. 😉

For help/guidance, please feel free to contact us through Freenode IRC at the #kde-artikulate channel. Cheers! \o/

GSoC: Week 5

So, lets start with the bad news: My Visa application to attend Akademy 2013 in Bilbao, Spain got rejected and so, I missed out on (a) meeting all you wonderful people, (b) giving a presentation on my GSoC project at the ‘Students Program Presentation’, and (c) organizing my very first BoF. 😦 Nevermind, there will surely be many more ‘Akademy’-s in my life. 🙂

Moving on to the good part: I am quite in pace with my stipulated GSoC time-line.

I am done with adding all the Scenario Units that I had proposed to add to the Basic Course Skeleton, namely:

  • In a Restaurant
  • At a Bank
  • In a Zoo
  • At a Job Interview
  • During an Emergency
  • Pets
  • At a Party

The Basic Course Skeleton now comprises of nineteen complete Scenario Units as shown below:


Also, I have created both the ‘ArtiKulate বাংলা’ (ArtiKulate Bengali) and the ‘ArtiKulate हिन्दी’ (ArtiKulate Hindi) courses.

In the Bengali Course, I am done with translating seven whole units to Bengali along with all the unit titles. In the translated units, all the related phonemes have also been tagged for every phrase.


Below, you can see a part of the ‘আবহাওয়া’ (Weather) scenario unit showing some words, expressions and sentences.


In the Hindi Course, all the unit titles have been translated to Hindi.


By Week 7, I will be done with translating the entire Basic Course Skeleton to Bengali as well as Hindi and the recordings for the Bengali Course should also be ready by then. In other words, the ‘ArtiKulate বাংলা’ Course will be completely ready by Week 7 and the ‘ArtiKulate हिन्दी’ Course will only have the recordings left.

BTW, all the Akademy 2013 attendees, please DO NOT forget to attend the two BoFs on Artikulate scheduled on Wednesday, July 17. The BoFs will be organized by Andreas Cord-Landwehr (IRC Nick: CoLa) on ‘Personas for Language Learning Apps’ and ‘How to contribute to Artikulate’ at 09:30 hours and 10:30 hours respectively.

Cheers! \o/

The month that was..

Its been more than a month since I last blogged, so, here are the updates of the month that was by far the most eventful month in my life so far.

I get a mail from my mentor, Andreas on the 2nd of May saying that I should apply for the Google Summer of Code, 2013 with Artikulate for KDE, May 3rd being the last day of proposal submission. And so I made the application which took me two hours. You’ll find the link to my proposal here. By then, I was done with adding Bengali to the list of languages in Artikulate.

What happens next is definitely one of the worst nightmares for someone like me whose lifeline is her computer. During the first week of May, the right-hand side hinge of my laptop breaks and it absolutely stops working. Thanks to the horrendous service of Dell, after a lot of trouble, I finally get back my laptop on the 28th of May. Also, I had my end semester exams starting from mid May extending upto June 1st. Precisely, these are the reasons for me not being able to blog for so long. 😦

So, now lets get to the good part. The results of GSoC 2013 and OPW 2013 came out on the 27th of May, 2013 at 19:00 hours UTC (or, 28th May, 2013 at 00:30 hours IST) and I have been selected for the Google Summer of Code, 2013 which means that I’ll be receiving a scholarship from Google for doing something that I love to, i.e., coding and that too on my favourite project, Artikulate for the whole summer under two wonderful mentors, Andreas Cord-Landwehr and Myriam Schweingruber. Yayie! \o/ And just when I was thinking that things couldn’t get any better, I get a mail on the 29th of May from Claudia Rauch saying that my request for travel and accommodation support to attend Akademy, 2013 has been granted by KDE e.V. and I was overwhelmed. Thanks a lot, you guys. Thanks for providing me with such great opportunities. I promise to give in my best and never let you down. You guys are seriously great. Cheers! 🙂

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.

‘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:
*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. ^_^

Entering the world of KDE.

Let me begin with apologizing for not being able to blog for a long time now, thanks to my numerous work engagements at college. 😦 Anyway, I’d rather switch to the main topic of discussion now.

When I started using Fedora exactly two years ago, I had the liberty of choosing my desktop environment from the two most extensively used DE-s, namely KDE and GNOME. After using GNOME for the first few weeks, I changed over to KDE and trust me, since then, I never wanted to switch over to any other desktop environment (no offence meant), thanks to the awesome user experience. Within a very short period of time (since I started using KDE) I was seriously considering the idea of contributing to my favourite desktop environment. The problem for me was ‘choosing your favourite application where you exactly want to contribute’ (’cause I had so many).

In January, 2013 while playing Klickety (one of my favourite KDE Games), I came across a very annoying bug (BUG: 284309) and wanted it to be removed immediately. I cloned the source, looked up the code and made a minor change that fixed the bug and eventually made my first commit, thanks to the help from Albert Astals Cid (IRC nick: tsdgeos), Viranch Mehta (IRC nick: viranch) and the entire KDE-Games community. So, voila! There I had made my very first contribution to KDE (yayie!). \o/

Its been a few months now that I have been contributing patches to KDE. The feeling of seeing your commits being shipped upstream is absolutely mesmerizing, especially for a beginner. 🙂 Also, I have to mention this that the people in the KDE Community are the most helpful and supportive people I’ve ever come across. So, any newbie who wants to contribute to KDE but is scared/shy to ask for help, my advice for you is that you would never find a more warm and welcoming group of people than the KDE Community. So don’t wait, start contributing! Cheers. 😀

8 years of dgplug

On this very day, in the year 2004, thanks to the efforts of a few GNU/Linux enthusiasts from Dr. B.C. Roy College, Durgapur, Kushal Das being the most prominent one, dgplug (the Linux Users Group of Durgapur) was formed. Today on the eve of its eighth birthday, I would like to wish dgplug a very happy birthday and everyone associated with it hearty congratulations for making it so far. May we continue this legacy for years to come. May dgplug continue to serve as a wonderful platform for GNU/Linux enthusiasts as well as newbies from all over the country and also abroad. Congratulations once again! 🙂

My Very First Patch

Hello folks! Really sorry for not being able to blog for sometime now. Got too many stuffs at hand. Finding it really hard to cope up with all the pressure. 😦 But, today I made it a point to keep aside all other engagements and blog about the significant event that took place last night. 🙂

Last night in #dgplug, Kushal asked me to go through the documentation page on retask and to install redis and python-redis and also to clone the repository. After installing the needful, I went on to clone the repo using “git clone git://” as was given in But I got a fatal error stating that the repository was not found. After stating this to Kushal, he asked me clone the repo using “git clone git://”(you see, the git repository I was trying to clone belonged to Kushal himself). He also asked me to fix this bug that I had discovered moments ago. I was enthralled as this would be my first ‘real-world’ problem to fix. With Kushal’s help I was able to fix the bug in no time. 😀

After making the change locally, I made my very first patch and mailed it to Kushal who soon added the change upstream. Inspite of the job being very trivial, it taught me many things about git config, creating patches and commiting and, above all, gave me the courage and confidence to take up bigger and more significant tasks. 🙂 Thank You Kushal. Eagerly looking forward to accomplishing the next task that I get. 🙂

The Beginning

Hie(the ‘e’ depicts lots of excitement :D) everyone, I loved computers even before I knew how to spell it. I remember adding two apples to three mangoes and having five fruits in the granddad computer my uncle owned back then. The OS was Windows 95 in all probabilities. Since then, my love for computers grew from the realms of interactive learning to computer games finally moulding its way into the world of programming. I remember the first piece of code that I wrote was in Logo at the age of eight and I adored that little turtle and how its leaving trails could create such beautiful figures. Then came Basic at the age of ten, HTML at the age of twelve, Java at the age of fourteen, C++ at the age of sixteen, C at the age of nineteen and now, at the age of twenty its presently Python’s turn. And, all this way I knew that it is definitely coding that I would love to do for the rest of my life.

Then came a turning point in my life: The Beginning of a new road. In the year, 2011 I got absolutely ‘FOSS’-ified by Samikshan Bairagya (IRC nick: samxan), a friend of mine. Since then, the journey was a fun ride. Installing Fedora 14 in my desktop was real smooth. But my laptop had other plans I guess. There was no way I could make Fedora 14 work  on my laptop. So, I gave up all hope of having Fedora on my system and went for Kubuntu and OpenSuse. Both of them worked absolutely fine when I got hold of a Fedora 15 bootable pen-drive and decided to give it a go and voila! It was working so well but only for a week or so after which my hard drive crashed. 😦 But I decided not to give up at all costs. So, after getting my hard drive fixed, after a few unsuccessful attempts, I was finally able to install Fedora 16 and trust me I’ve had absolutely no issues to face since then (yayie! :D).

It was during this phase that I got to know about the IRC, how it works and the various channels where you can easily pop up your technical query and be sure that you’ll be catered to. #dgplug is the channel for the Linux User’s Group of Durgapur, West Bengal. Samikshan informed me about its summer training programme(I Know What You Are Going To Do This Summer) for GNU/Linux newbies. I immediately joined it and was very excited but due to some unavoidable circumstances like shifting to my hostel with no availability of internet connection and my laptop’s hard disk crashing, I could not complete the training programme in 2011. But, life sometimes gives you a second chance. I got mine during this summer (June 2012). And guess what? This year ‘I Know What You Are Going To Do This Summer’ taught me so much that now I can confidently give a try at solving real world technical problems! Thanks to Kushal Das (IRC nick: kushal), who every summer puts in enormous amount of effort to make the summer training possible and a hit. Currently I’m looking forward to a couple of projects that I have at hand. I will update you guys about them very soon.