Android 4.4 vs. Windows 8.1 from a developer perspective

I am a long time supporter of Microsoft and Windows. I have been using Windows, Windows Mobile and Windows Phone for many years, and I just purchase my first Android device, the 2013 Nexus 7, couple days ago. I have not migrated all my “e-life” to Android (and do not have that intention at the moment), so I will not be able to give a thorough review or perspective on Android. Moreover, I am not talking about the app gap here because I have to admit that the app is so obvious. I am also not talking about disconnection of Modern and desktop or how difficult it is to use Store app; in my humble opinion, that disconnection is hard to solve and Microsoft is going to right way to make people feel better, and I really do not feel using Store apps is harder than using Android apps at all.

But there are much more that Microsoft should (or even must) learn from Android and ironically from their previous version of Windows as well. Most of what I am comparing here is from my experience using Android and Windows 8.1 on tablets.

Read More

SailAlign and the error “ReadString: String too long”

If you have used SailAlign (or HTK) to do forced alignment on a large corpus, you may already encounter the error: ReadString: String too long. This error is actually thrown out from HTK, and a quick search on the Internet would return the below web page.

The solution according to the page is:

Make changes to the pronunciation dictionary:
Replace all multiple spaces with single space;
Replace all tabs with single space;
Put a ” before every double quote (“); %”
Put a ” before any dictionary entry beginning with single quote (‘)

And this actually solves the problem, which is quite annoying since the error message “String too long” gives no clue on this solution. Moreover, you will also have to make the same changes to the transcript giving to SailAlign to avoid seeing the same problem with HDecode.

I have spent so much time checking the dictionary and reducing the length of the input data to get rid of the error, just to find out that those suspects are irrelevant. Fortunately I found the problem right in the transcript, and at last SailAlign can run without a hitch now.