If you are curious about what I am currently working on, click here.

Projects are listed roughly in order of importance, relevance, and maturity. Most of them are published on GitHub.

High Performance Computing

Sorry, I only have professional projects in this category, all of which are under NDAs and not open source. Please refer to my CV for more details.

Speech and NLP Technologies


aeneas is a Python library and a set of tools to automagically synchronize audio and text.
[Web page] [GitHub] [Web App]


Port of the eSpeak-ng text-to-speech engine to Javascript via emscripten that allows client-side text-to-speech synthesis in any browser supporting Web workers and the Web Audio API.
[Blog] [Demo] [GitHub]


lachesis automates the segmentation of a transcript into closed captions.


Mining MediaWiki dumps to create better TTS engines (using Machine Learning).


ipapy is a Python module to work with International Phonetic Alphabet (IPA) strings.


elzzur solves a Ruzzle board, listing all the valid words with their score.


A Python script to extract the plain-text data from the Nuovo vocabolario di base (NVdB) PDF file.


A collection of links and notes on forced alignment tools.

Digital Publishing


Please see the dedicated eBooks page.


Minstrel is a FLOSS hybrid reading app specifically designed for Audio-eBooks. The app, built on the Apache Cordova framework, currently compiles to Android and iOS.
[Web page] [GitHub]


Menestrello is the official stable release of Minstrel, maintained by ReadBeyond (that is, me), which can be freely downloaded from the App Store and Google Play. Please visit the Menestrello Web page for a video introduction, screenshots, free demo EPUB 3 Audio-eBooks, and more.
[Web page]


A multi-tool for creating, editing and converting dictionaries, especially for eReader devices.


A multi-tool for dealing with fonts and EPUB eBooks.


yael (Yet Another EPUB Library) is a Python library for reading, manipulating, and writing EPUB 2/3 files.



A Bash+Javascript script to connect/disconnect the WebCube4 (Huawei E8378) 4G/LTE router to/from the Internet directly from the shell. I grew tired of having to use the cumbersome, JS/AJAX-ridden local Web interface, so I captured some traffic with WireShark and analyzed it, deciphering the relevant HTTP headers, API endpoints, and Javascript code. Then, I emulated the relavant bits with curl and node, in a simple but elegant Bash script. (The process is a story worth on its own...)

C'mon, I Want Lolcats!

This proof of concept EPUB 3 eBook shows how data can be obfuscated in an EPUB 3 file, using JS to reconstruct it at runtime.
[Local page]

Retired Projects

(The following projects are retired/deprecated/abandoned/quick-and-dirty-hacks, listed here for historical reasons. Proceed with judgement!)


This JavaScript enables the tap-to-play function on those platforms that do not properly support the EPUB 3 Media Overlay specification (most notably, Apple iBooks).


This proof-of-concept Android app lets you easily read and navigate complex EPUB 2/3 eBooks (internal/external links, parallel texts). In the GitHub repo you can find the APK, the source code, screenshots and some EPUB eBooks with parallel texts.


ink2fxl converts Inkscape SVG files to XHTML+(SVG)+CSS, XHTML+raster (layer-wise), or raster-only (layer-wise).


exlibris is a tool for adding an ex libris to EPUB eBooks, available as a CLI tool, a GUI tool, and Calibre plugin.

Export Annotations from Kobo eReaders

A quick-and-dirty Python script to export annotations and highlights from Kobo eReaders.

Export Annotations from Bookeen Cybook Odyssey eReaders

A quick-and-dirty Python script to export annotations and highlights from Bookeen Cybook Odyssey eReaders.
[Local page]

EPUB 3 Load External Audio Test

This EPUB 3 eBook shows how to load an external audio resource (an MP3 file from a remote server). Remember to allow remote contents in your Reading System (e.g., iBooks).
[Local file]