Wednesday, May 14, 2014

New DingLabs YouTube Channel

In case you haven't seen it, there is a new DingLabs channel on YouTube.

So far, I have videos for several audiobooks, with each word highlighted as it is spoken. It's rather hypnotizing :)

Here's a sample from Grimm's Fairy Tales:

Whether you're learning English, learning to read, refining your vocabulary or just looking to make a story more engaging, these videos with same-language-subtitles are a great resource.

Here is the content so far:
YouTube is a promising medium for synchronized text and audio. You can view it on any phone, tablet, notebook or desktop computer. It also supports subtitles that could be used for translations or other annotations.

Here are two more videos showing The Linguist audiobook in both English and Spanish, so you can get a feel for what it's like to follow along with an audiobook in a foreign language.

Please share your feedback or ideas for new content or features. And you can of course subscribe to the DingLabs YouTube channel to stay on top of new developments.

Sunday, February 3, 2013

Learn Clojure with Screencast Series

Clojure is a programming language that has gained a large following, becoming one of the most compelling Lisp implementations out there. Clojure brings innovations such as first-class syntax for vectors, sets and maps, and a philosophy of immutability and functional programming. And much, much more.

For those looking to get started with Clojure, I've created a screencast tutorial series that walks through the Clojure Koans exercises. The koans introduce twenty key elements of the language. I create one video per lesson, so you can watch and learn Clojure in bite-size pieces:

The entire YouTube playlist is here: Clojure Koans Walkthrough

Even if you never use Clojure in your day-to-day development, the ideas explored in the Clojure Koans series can expand your horizons in any programming language you use.

Watch the videos and have fun.

Wednesday, February 9, 2011

Announcing: DingLabs Desktop Player for Listening-Reading

Just a quick note to announce the availability of a new tool.

A lot of the best language learning content is not "public domain", and cannot be shared in the DingLabs Library. For that reason, I've created the Desktop Player which brings the same playback technology to your desktop. So you can learn from your favorite material, such as audiobooks.

Another brand new feature is the support for dual transcripts, making it possible to enjoy the full promise of the Listening-Reading method.

The Desktop Player viewing two transcripts: Chinese and English.
To download and run, check out this page: Desktop Player.

Please let me know if you encounter any bugs or confusing behavior.  And thank you in advance for your feedback, I'd love to hear what's missing or what would be great to add.

I invite you to download the Desktop Player and give it a spin. Its beginnings may be humble, but there are a lot of cool things that can be done with this technology. As we share it with others, new ideas will arise and we will all benefit.

Thursday, February 4, 2010

How to Prepare Content - Part 2

This is Part 2 in a series. You may want to first read: Part 1.

The DingLabs Reader is intended to be open to anyone to post and share their own content.

The process isn't fully documented yet, but it is usable right now, and the steps are pretty simple:
  1. The first step is to use Transcriber to create a .trs file for each chapter (or audio file) you would like to share.
  2. Upload the .trs and .mp3 files somewhere on the Internet. If you don't have a website, you might just try Google Sites to host your files.
  3. Finally, create and upload an XML file which will describe your book and the locations for each .trs and .mp3 file.  As an example, here is a link to the actual XML file that is used for Alice in Wonderland:
    (you might have to "View Source" or "Save Link as..." to see the XML).
Now you can run the DingLabs Reader, and tell it to load your book. You do this by including a link to your XML file in the Reader URL. Here's an example, using Alice in Wonderland again. Just use your URL in the highlighted section (although it may appear as two lines, it is one long URL):

That's it! When the program loads, it will fetch your XML file, and find the .trs and .mp3 file for each chapter, so it can create the interactive display for playback.

Feel free to reply with your questions or feedback.

Tuesday, February 2, 2010

How to Prepare Content - Part 1

To prepare content to be played back with the DingLabs Reader, you can use the free, open-source tool, Transcriber.

You can use Transcriber to manually synchronize an audio file and it's transcript. The result will be a .trs file, containing the transcript text and timestamps. The DingLabs Reader simply parses this .trs file to directly produce the interactive display of the transcript.

How to Align A Book Chapter

You will need:
  • Audio file for the chapter (WAV highly recommended)
  • Full text of the chapter
  • Transcriber (downloaded and installed)
I highly recommend only using WAV files with Transcriber, to guarantee accurate alignments. Transcriber doesn't seem to generate accurate timestamps with longer MP3 files.  So, first convert your MP3 files to WAV.  You can Google for such a tool, or maybe try an online converter.

When running Transcriber for the first time, make UTF-8 the default encoding:
  1. Click 'Options' > 'General...'
  2. Select 'Unicode UTF-8' for the Encoding, and click OK
  3. Click 'Options' > 'Save configuration'
Now you can bring in the audio and text to align. Click 'File' > 'New trans' and select the audio file for your chapter. Next, in the text area, you can paste in the full text of your chapter. If you need to change the font (to display Chinese, etc.), click 'Options' > 'Fonts' > 'Text' and choose a new font Family and size.

Now with your audio loaded, and your text pasted in, you can begin the work of synchronizing the text with the audio. As the audio plays back, you hit "ENTER" to synchronize the text at that position with that point of the audio.

Some keyboard shortcuts to use:
  • TAB key to play or pause the audio playback
  • ENTER to split the text, creating a sync point with the audio.
  • ALT-LEFT or ALT-RIGHT to take a small jump forward or backward in the audio
  • If you hit ENTER by mistake, creating an unwanted split, just hit CTRL-BACKSPACE to remove the split.
  • If you didn't get the timing quite right on your sync point, you can easily adjust it with your mouse. Look at the lower-most green bar -- you can drag the section divider into the correct position with your mouse. Just hold down the CTRL key while clicking and dragging with your mouse.
  • To denote paragraphs, hit CTRL-T at the beginning of a paragraph, and create a speaker named "<p>".  To mark future paragraphs, you should be able to just hit CTRL-T then ENTER.
After using the program for a little bit, you'll get faster and faster at doing the alignments.

At any time you can hit CTRL-S to save your .trs file. You may want to give it a name similar to the audio file, to help keep things organized.

OK, have fun aligning, it can become addicting! :-)

Continue on to Part 2, and learn how you can share your work with the world by making it playable in the DingLabs Reader!

Edited 3/28/10 to recommend only using WAV files with Transcriber.

Friday, January 1, 2010

New Reader Demonstration Video

A quick demonstration video that talks about what the Reader is, and shows it in action.

Saturday, December 19, 2009

My Little Contribution to Language Learning Reader screenshot
I’ve been working on a “secret” project that may help people learn languages. It provides a way to listen to audio while reading along with the corresponding text. As the audio plays, the corresponding section of text is highlighted.  You can also click on any section of the text to immediately begin playing the audio from that point.
My dream is that all language learning podcasts will race to make their content available in this way.
Listening and reading are critical components of language learning. But like oil and water, they’re not easy to combine, so each is generally practiced in isolation. Try listening to an audiobook while reading along with the real book.  What if you want to hear the last sentence again?  It’s a pain to rewind the audio.  What if you want jump to another part of the book?  What if you just listen for a while, but then need to refer to the book again later?  It’s frustrating because the audio and the book are not connected in any way.
But what if you could combine the two?
Peanut-butter jelly time! Embedded here is an example of a very short Chinese lesson (thanks ChinesePod). Try clicking the play button, or anywhere on the transcript:

I have scaled this up to entire books! Click here to see the full book, Alice in Wonderland, in all it’s English glory: Reader screenshot
(text from Project Gutenberg, audio from LibriVox)

  • Instantly accessible from any web browser -- no special software to download/install.
  • You can still listen without reading, or read without listening. When you want to listen to a given part, or read a given part, you don’t have to struggle to find the right place in both the audio and text.
  • Since you’re reading along in a web-page, your favorite pop-up dictionary will continue to serve you!

The intent is that anyone can create their own synchronized text/audio to share with the world.  The player is just a tool that can play back an audio file with a given transcript. Anyone can host audio and transcripts on their own website, and use the player to present them together. The player can also be embedded in a webpage, as demonstrated with the Chinese lesson above.
Why would any language learning podcast NOT make their content available in this fashion?

What’s Next
  • Connect with other people who are interested in seeing this type of idea come alive.
  • Make existing content available in this format (like synchronizing content from LibriVox,  Project Gutenberg).
  • Gather feedback from users to see what kind of crazy things become possible when you have text and audio aligned (e.g. easily generating flashcards with text and audio).
I welcome your feedback!  And feel free to notify your favorite podcast if you’d like to see their content available in this type of format.