My favorites | Sign in
Project Home Wiki Issues Source
Project Information


Niels P. Mayer ( )

VoiceToGoog helps people organize their voice thoughts using text annotation automatically provided by voice-to-text technology. All notes are time and location stamped to provide easy context-sensitivity -- allowing visual browsing of one's notes, activities (external program launch) by both time and location. The browsing experience is augmented by map-view mashups indicating where given speech/note/activity took place. As a utility application, VoiceToGoog is a primary enabler of mobile literacy because it allows the user the ability to use voice instead of typing and can even read back the transcribed text. Of course you can do all the expected things like using voice for Google-search, YouTube-search, map-search, or e-mail on the transcribed contents, or using the spoken phone number, or contact name, to call or email that contact.

Coming soon... Simile-Widgets Exhibit-based Embedded Webserver Faceted Search

Coming soon... Simile-Widgets Exhibit-based Embedded Webserver Map-View

Coming soon... Simile-Widgets Exhibit-based Embedded Webserver Timeline-View

Coming soon... Simile-Widgets Exhibit-based Embedded Webserver Calendar-View

Now available for free download at!

VoiceToGoog 0.3.0 has been released for free download at for the amazing Linux/!MeeGo-based Nokia N9 as well as the Nokia N950 developer handset.

See also:


voicetogoog (0.3.0) stable; urgency=high

  • VoiceToGoog 0.3.0: Fourth release to ( see also ).
  • /opt/voicetogoog/qml/voicetogoog/main_harmattan.qml : Launches on Harmattan platform, using a toplevel PageStackWindow element, which enables support for portrait mode and automatic rotation into landscape, as well as other Harmattan platform integration features. For example, the fullscreen() method toggles visibility of the Harmattan status-bar; note that VoiceToGoog will continue to start-up fullscreen on Harmattan -- now, however, deselecting "Fullscreen" works correctly and reorients the status-bar appropriately during rotation. Note that the size of the main window is reduced by 35 pixels to compensate for the size of the status-bar when not in full screen mode -- '35' may not be correct. Couldn't find a system constant representing this value.
  • /opt/voicetogoog/qml/voicetogoog/main_linux.qml : Launches on Linux/MeeGo platform, using generic QML interface provided by using a toplevel 'Rectangle' element. Portrait mode on Linux desktop is dynamically enabled when the window is resized to be longer than it is wide. On the desktop, the fullscreen() method makes the app go full-screen on Linux desktops, and displays without titlebar on MeeGo Netbook; the app starts as a regular sized window on the desktop -- to go fullscreen, user should select "Fullscreen" option in the menu.
  • /opt/voicetogoog/qml/voicetogoog/main_symbian.qml : Launches on Symbian platform. This is a placeholder for the future, in case someone submits code to integrate this platform, or Nokia sends me a 701 ( ) to do it myself.
  • /opt/voicetogoog/qml/voicetogoog/VoiceToGoog.qml : The VoiceToGoog QML element, a 'Rectangle' subclass, implements majority of platform-independent code comprising the application; its caller, main_{linux,harmattan,symbian}.qml, is where any platform dependencies should be.
  • /opt/voicetogoog/qml/voicetogoog/UtterDelegate.qml : The details-view supports portrait mode, hiding some information which doesn't fit, and dynamically re-exposing that information when rotated into landscape. Now using 'utteranceText.paintedHeight' to accurately determine height of varying length of transcription contents. The value is forced to recalculate on reorientation through a declarative dependency (with invariant result) on a size-change in window.height and window.width; If no location information, the details view shows the transcription confidence percentage; if location information present, drop confidence percentage and location details (e.g. "range_interpolated" or "rooftop").
  • /opt/voicetogoog/qml/voicetogoog/VoiceToGoog.qml : The record, language-menu, toplevel-menu, and pause buttons are resized for portrait mode display. Some of the state-based text instructions in the buttons is removed in portrait mode because it won't fit.
  • /opt/voicetogoog/qml/voicetogoog/MenuDelegate.qml : Menu entries containing parenthetical comments delimited by "[" have the comment text removed from display in portrait mode because they won't fit. The details are dynamically added back in landscape mode.
  • /opt/voicetogoog/qml/voicetogoog/component/.qml : All dialogs and other open-source components in this directory now properly support dynamic resizing on orientation change.
  • /opt/voicetogoog/qml/voicetogoog/component/ModalTextEdit.qml : The "Edit Selection" functionality contains a dialog with four buttons in Landscape mode -- the "copy to clipboard" button is removed from view in portrait mode because it won't fit. Cleanup implementation and rationalize code that pops/lowers VKB.
  • /opt/voicetogoog/qml/voicetogoog/VoiceToGoog.qml : In portrait mode, Comp.SplashScreen instance is invoked with gfx/splash_screen_portrait.png (stretched from original landscape-mode gfx/splash_screen.png, should be redone with more legible text).
  • /opt/voicetogoog/qml/voicetogoog/scripts/commands.js : URLs presented in dialogs use more legible ACTIVE_TEXT_COLOR to highlight URLs -- CMD.openUrlExternally() and CMD.aboutVoicetogoog() use RICHTEXT_STYLESHEET_PREAMBLE RICHTEXT_STYLESHEET_APPENDIX to bracket displayed text.
  • /opt/voicetogoog/qml/voicetogoog/landmarkmap/Slider.qml : In map-vew, this new implementation correctly repositions the slider on rotation. Updated/merged with code from a newer Nokian implementation of original source.
  • /opt/voicetogoog/qml/voicetogoog/scripts/commands.js : CMD.voicetogoogExternalIssueReport() and CMD.voicetogoogExternalFeatureRequest() both invoke CMD.externalIssueReportLabels() to pre-fill the online issue-tracker labels with information extracted from following: 'appLang' 'appRegion' 'recognizerLanguageModel.currentISO639Language()' 'desktop.width' 'desktop.height' 'isOnline' 'Controller.isHarmattan'. Updated templates associated with and to not ask user to paste this information from the terminal as that isn't going to happen for most users.
  • /opt/voicetogoog/qml/voicetogoog/MenuModel.qml : Added 'Help Using VoiceToGoog' entry and associated CMD.voicetogoogExternalHelp() which launches!VoiceToGoog_Help (TBD/WIP)..
-- Niels Mayer Wed, 30 Nov 2011 18:30:00 -0700
voicetogoog (0.2.1) stable; urgency=high

  • VoiceToGoog 0.2.1: Actual second release to ( see also ).
  • Fixed regression introduced in 0.2.0 CMD.selectAllFromStart(), CMD.selectAllFromEnd(), CMD.selectUntranscribedEntries() which broke "playlisting" of selection for playback or upload.
  • Increase efficiency of CMD.selectAllFromStart(), CMD.selectAllFromEnd(), CMD.selectUntranscribedEntries(); switch to details view to prevent all the seleccted map items text from overlaying and making a mess on the display, plus it's slow if there are hundreds of map items.
  • Fixed issue with accidental gestures above the menus being passed to underlying map or details view (causing accidental scrolling or selection) while either of the menus are up. The menu "Dimmer" now takes up full screen, with stacking order above the views but below the record/pause/menu buttons.
  • Modified map view slider-button have same visual appearance as other buttons -- transparent.
  • Work-around issue with YouTube search causing VoiceToGoog to fail validation for China in Nokia's store because of functionality, such as YouTube, that is unavailable in China. Work-around by removing functionality that doesn't work in China, based on detecting the presence of locale "zh-CN." Language-switching GUI introduced in 0.2.0 allows users to select "zh-CN" via the language menu. Other "zh" locales enable functionality disabled for "zh-CN." (Correct solution is detailed in "Allow regional and/or user customization of external application launchers")
-- Niels Mayer Fri, 11 Nov 2011 21:00:00 -0700
voicetogoog (0.2.0) stable; urgency=high
-- Niels Mayer Thu, 10 Nov 2011 05:30:00 -0700
voicetogoog (0.1.0) stable; urgency=high
  • VoiceToGoog 0.1.0: First release of voicetogoog.
  • Supports language locales English (en), Mandarin Chinese (zh), Japanese (ja), French (fr), Italian (it), German (de). Spanish (es), Korean (ko).
  • en-US and en-CA both default to "en-US" locale; Britain and English locales not matching above default to "en-GB" locale.
  • More features, usability/UI improvements, better Harmattan UX next release.
-- Niels Mayer Fri, 28 Oct 2011 18:00:00 -0700

Screenshots of Version 0.2.0


Details View

Menu View

Recording a new voice note, prior to transcription (v 0.1.0)

Screenshots of Version 0.2.1

Details View, Russian Selected

Details View, Polish Selected (also showing some Romanian words understood by selecting Turkish language comprehension).

English dialect selection in Language Menu


The platform tools, such as video/photo capture tools, may offer options to embed geolocation information with their media. VoiceToGoog would make use of this information in enabling voice-and-location annotation of arbitrary media/document items on the handset. This is achieved via Gallery/Tracker integration to allow voice-to-text annotation of geotagged photos and videos. Geotagged media displays similar to VoiceToGoog's audio notes in the map-view, but with a different icon indicative of media type, such as audio, video, photo, etc. This would be a significant improvement in the concept -- in terms of selecting and reporting on media with external audio notes and their transcribed textual representation. In practice, the selected map-region plots captured media-files and their associated geolocation info by searching via and looking up geotag information from . These "media landmarks" can then be associated with any number of VoiceToGoog audio annotations, which would show up as annotations located in association with the media, along with the traditional VoiceToGoog central-data-structure that captures an accurate timestamp and Geotag of each speech utterance. The transcribed text is one piece of attached data. The other would be the attachment to a given task (which is also a first-class data-item with its own graphical representation and associated time/location data). And another would be attachments to these aforementioned "Document Gallery" objects provided by platform. By using a centralized and multifarious data-type, eased by the use of dynamic language JavaScript/QML, one thus can achieve arbitrary associations of these multifarious data-items that are the central data-type of VoiceToGoog.

It is a testament to the Harmattan/MeeGo platform that small amounts of application-level coding can create a big and useful feature, by leveraging QML qsparql capabilities of the Qt Framework and a well constructed QSPARQL query and the SLO Ontology for Locations. For example, the following shell command, issued via SSH, lists all the location-tagged photos and videos I've taken on the Nokia N950, which I'd like to be able to plot and voice-annotate on the VoiceToGoog map mashup:

~ $ tracker-sparql -q 'SELECT nie:url(?u) ?cty ?cry {                         \
                                                     ?u slo:location          \
                                                     [ slo:postalAddress      \
                                                       [ nco:locality ?cty ;  \
                                                         nco:country  ?cry ]  \
                                                     ] .                      \
  file:///home/user/MyDocs/DCIM/20110726_001.jpg, Corona Del Mar, UNITED STATES
  file:///home/user/MyDocs/DCIM/20110726_002.jpg, Corona Del Mar, UNITED STATES
  file:///home/user/MyDocs/DCIM/20110726_003.jpg, Corona Del Mar, UNITED STATES
  file:///home/user/MyDocs/DCIM/20110726_004.jpg, Corona Del Mar, UNITED STATES
  file:///home/user/MyDocs/DCIM/20110726_005.jpg, Corona Del Mar, UNITED STATES
  file:///home/user/MyDocs/DCIM/20110726_006.jpg, Corona Del Mar, UNITED STATES
  file:///home/user/MyDocs/DCIM/20110726_007.jpg, Corona Del Mar, UNITED STATES
  file:///home/user/MyDocs/DCIM/20110726_008.jpg, Corona Del Mar, UNITED STATES
  file:///home/user/MyDocs/DCIM/20110726_009.jpg, Corona Del Mar, UNITED STATES
  file:///home/user/MyDocs/DCIM/20110726_010.jpg, Corona Del Mar, UNITED STATES
  file:///home/user/MyDocs/DCIM/20110726_011.jpg, Corona Del Mar, UNITED STATES
  file:///home/user/MyDocs/DCIM/20110726_012.jpg, Corona Del Mar, UNITED STATES
  file:///home/user/MyDocs/DCIM/20110726_013.jpg, Corona Del Mar, UNITED STATES
  file:///home/user/MyDocs/DCIM/20110726_014.jpg, Corona Del Mar, UNITED STATES
  file:///home/user/MyDocs/DCIM/20110726_015.jpg, Corona Del Mar, UNITED STATES
  file:///home/user/MyDocs/DCIM/20110726_016.jpg, Corona Del Mar, UNITED STATES
  file:///home/user/MyDocs/DCIM/20110726_017.jpg, Corona Del Mar, UNITED STATES
  file:///home/user/MyDocs/DCIM/20110726_018.jpg, Corona Del Mar, UNITED STATES
  file:///home/user/MyDocs/DCIM/20110726_019.jpg, Corona Del Mar, UNITED STATES
  file:///home/user/MyDocs/DCIM/20110726_020.jpg, Corona Del Mar, UNITED STATES
  file:///home/user/MyDocs/DCIM/20110726_021.jpg, Corona Del Mar, UNITED STATES
  file:///home/user/MyDocs/DCIM/20110726_022.jpg, Corona Del Mar, UNITED STATES
  file:///home/user/MyDocs/DCIM/20110726_023.jpg, Corona Del Mar, UNITED STATES
  file:///home/user/MyDocs/DCIM/20110726_024.jpg, Corona Del Mar, UNITED STATES
  file:///home/user/MyDocs/DCIM/20110726_025.jpg, Corona Del Mar, UNITED STATES
  file:///home/user/MyDocs/DCIM/20110726_026.jpg, Corona Del Mar, UNITED STATES
  file:///home/user/MyDocs/DCIM/20110726_027.jpg, Corona Del Mar, UNITED STATES
  file:///home/user/MyDocs/DCIM/20110726_028.jpg, Corona Del Mar, UNITED STATES
  file:///home/user/MyDocs/DCIM/20110730_001.jpg, Corona Del Mar, UNITED STATES
  file:///home/user/MyDocs/DCIM/20110730_002.jpg, Corona Del Mar, UNITED STATES
  file:///home/user/MyDocs/DCIM/20110730_003.jpg, Corona Del Mar, UNITED STATES
  file:///home/user/MyDocs/DCIM/20110731_002.jpg, Corona Del Mar, UNITED STATES
  file:///home/user/MyDocs/DCIM/20110731_003.jpg, Corona Del Mar, UNITED STATES
  file:///home/user/MyDocs/DCIM/20110807_001.mp4, Corona Del Mar, UNITED STATES
  file:///home/user/MyDocs/DCIM/20110807_002.jpg, Corona Del Mar, UNITED STATES
  file:///home/user/MyDocs/DCIM/20110807_003.jpg, Corona Del Mar, UNITED STATES
  file:///home/user/MyDocs/DCIM/20110813_001.mp4, Corona Del Mar, UNITED STATES
  file:///home/user/MyDocs/DCIM/20110814_001.mp4, Corona Del Mar, UNITED STATES
  file:///home/user/MyDocs/DCIM/20110815_001.mp4, Corona Del Mar, UNITED STATES
  file:///home/user/MyDocs/DCIM/20110815_002.mp4, Corona Del Mar, UNITED STATES
  file:///home/user/MyDocs/DCIM/20110815_003.mp4, Corona Del Mar, UNITED STATES
  file:///home/user/MyDocs/DCIM/20110822_002.mp4, Corona Del Mar, UNITED STATES
  file:///home/user/MyDocs/DCIM/20110824_013.mp4, Corona Del Mar, UNITED STATES
  file:///home/user/MyDocs/DCIM/20110908_001.jpg, Corona Del Mar, UNITED STATES
  file:///home/user/MyDocs/DCIM/20110908_002.jpg, Corona Del Mar, UNITED STATES
  file:///home/user/MyDocs/DCIM/20110908_003.mp4, Corona Del Mar, UNITED STATES
  file:///home/user/MyDocs/DCIM/20110908_004.mp4, Corona Del Mar, UNITED STATES
  file:///home/user/MyDocs/DCIM/20110909_001.mp4, Corona Del Mar, UNITED STATES
  file:///home/user/MyDocs/DCIM/20110910_001.jpg, Corona Del Mar, UNITED STATES
  file:///home/user/MyDocs/DCIM/20110911_001.jpg, Corona Del Mar, UNITED STATES
  file:///home/user/MyDocs/DCIM/20110911_002.mp4, Corona Del Mar, UNITED STATES
  file:///home/user/MyDocs/DCIM/20110912_001.mp4, Corona Del Mar, UNITED STATES
  file:///home/user/MyDocs/DCIM/20110912_002.mp4, Corona Del Mar, UNITED STATES
  file:///home/user/MyDocs/DCIM/20110912_003.mp4, Corona Del Mar, UNITED STATES
  file:///home/user/MyDocs/DCIM/20110912_004.mp4, Corona Del Mar, UNITED STATES
  file:///home/user/MyDocs/DCIM/20111012_002.jpg, Corona Del Mar, UNITED STATES
  file:///home/user/MyDocs/DCIM/20111012_003.mp4, Corona Del Mar, UNITED STATES
  file:///home/user/MyDocs/DCIM/20111017_001.jpg, Corona Del Mar, UNITED STATES
  file:///home/user/MyDocs/DCIM/20111017_002.jpg, Corona Del Mar, UNITED STATES
  file:///home/user/MyDocs/DCIM/20111017_003.jpg, Corona Del Mar, UNITED STATES
  file:///home/user/MyDocs/DCIM/20111017_004.jpg, Corona Del Mar, UNITED STATES
  file:///home/user/MyDocs/DCIM/20111017_005.jpg, Corona Del Mar, UNITED STATES
  file:///home/user/MyDocs/DCIM/20111017_006.jpg, Corona Del Mar, UNITED STATES
  file:///home/user/MyDocs/DCIM/20111113_007.jpg, Corona Del Mar, UNITED STATES
  file:///home/user/MyDocs/DCIM/20111014_001.jpg, Newport Beach, UNITED STATES
  file:///home/user/MyDocs/DCIM/20111014_002.jpg, Newport Beach, UNITED STATES
Powered by Google Project Hosting