[Tts-project] Speech-dispatcher: do any modules/backends support playing sound-icons ?

Sander Eikelenboom linux at eikelenboom.it
Thu May 21 20:40:24 UTC 2015


Sunday, May 17, 2015, 2:18:38 PM, you wrote:

> Sunday, May 17, 2015, 10:30:31 AM, you wrote:

>> Sunday, May 17, 2015, 12:55:55 AM, you wrote:

>>> -----BEGIN PGP SIGNED MESSAGE-----
>>> Hash: SHA512

>>> hi
>>> As far as I know, espeak does. The issue is that sond icons are not
>>> usually included in speech-dispatcher packages by default, and they're
>>> not usually in linux distribution repositories. I remember actually
>>> grabbing the sound icons package once, but never got it working. This
>>> is one area that might need help from distro maintainers. I can
>>> probably get someone to include a sound icons package in arch if it
>>> will get at least a little use
>>> Thanks
>>> Kendell clark

>> Added the Debian sound-icons package maintainer and the "Debian Accessibility 
>> Team" mailinglist to the CC.

>> I'm using Debian Jessie, it has an seperate package for the sound-icons them 
>> selves and i have it installed:
>> $ dpkg -l | grep speech
>> ii  espeak                                1.48.04+dfsg-1                      amd64        Multi-lingual software speech synthesizer
>> ii  espeak-data:amd64                     1.48.04+dfsg-1                      amd64        Multi-lingual software speech synthesizer: speech data files
>> ii  festival                              1:2.1~release-8                     amd64        General multi-lingual speech synthesis system
>> ii  festival-dev                          1:2.1~release-8                     amd64        Development kit for the Festival speech synthesis system
>> ii  festlex-poslex                        1.4.0-5                             all          Part of speech lexicons and ngram from English
>> ii  libespeak-dev:amd64                   1.48.04+dfsg-1                      amd64        Multi-lingual software speech synthesizer: development files
>> ii  libespeak1:amd64                      1.48.04+dfsg-1                      amd64        Multi-lingual software speech synthesizer: shared library
>> ii  libflite1:amd64                       1.4-release-12                      amd64        Small run-time speech synthesis engine - shared libraries
>> ii  libgsm1:amd64                         1.0.13-4                            amd64        Shared libraries for GSM speech compressor
>> ii  libopencore-amrnb0:amd64              0.1.3-2.1                           amd64        Adaptive Multi Rate speech codec - shared library
>> ii  libopencore-amrwb0:amd64              0.1.3-2.1                           amd64        Adaptive Multi-Rate - Wideband speech codec - shared library
>> ii  libsonic0:amd64                       0.1.17-1.1                          amd64        Simple library to speed up or slow down speech
>> ii  libspeechd-dev                        0.8-7                               amd64        Speech Dispatcher: Development libraries and header files
>> ii  libspeechd2:amd64                     0.8-7                               amd64        Speech Dispatcher: Shared libraries
>> ii  mbrola                                3.01h+1-2                           amd64        Multilingual software speech synthesizer
>> ii  python3-speechd                       0.8-7                               all          Python interface to Speech Dispatcher
>> ii  sound-icons                           0.1-3                               all          Sounds for speech enabled applications
>> ii  speech-dispatcher                     0.8-7                               amd64        Common interface to speech synthesizers
>> ii  speech-dispatcher-audio-plugins:amd64 0.8-7                               amd64        Speech Dispatcher: Audio output plugins
>> ii  speech-dispatcher-festival            0.8-7                               amd64        Festival support for Speech Dispatcher
>> ii  speech-tools                          1:2.1~release-8                     amd64        Edinburgh Speech Tools - user binaries

>> Double checked and they are in: /usr/share/sounds/sound-icons/ which corresponds
>> with the path in speech-dispatchers espeak.conf file.

>> Is there by your knowledge an option on package build-time that could be 
>> involved (and is perhaps not enabled) ?

>> I will try to switch on some more debugging again, see if it comes up with 
>> something (can't remember it did last time i tried).

>> Thanks for your time !

>> --
>> Sander

> Here is my simple python test script:
> #!/usr/bin/env python3

> import speechd

> ssipclient = speechd.SSIPClient('sound-icon-test', socket_path='/run/user/1000/speech-dispatcher/speechd.sock')
> ssipclient.sound_icon('start')
> ssipclient.sound_icon('trumpet-12')
> ssipclient.sound_icon('trumpet-12.wav')
> ssipclient.close()


> But instead of playing the sound of the sound-icon, it reads the name.

> I have set debug to 5 and attached the speech-dispatcher logs from running this 
> script. With my untrained eye i don't see anything obvious though.

> --
> Sander


>>> Sander Eikelenboom wrote:
>>>> Hi All,
>>>> 
>>>> I'm trying out speech-dispatcher and the python module for a
>>>> project. Speech works great, but i'm struggling to to get the
>>>> "sound-icons" to work. The documentation is rather sparse :-(
>>>> 
>>>> from /etc/speech-dispatcher/modules/espeak.conf it seems that
>>>> espeak doesn't support sound-icons, which is a but cryptic since
>>>> after that it shows configuration options for sound-icons ?: # --
>>>> SOUND ICONS -- # Espeak  does not currently support playing sound
>>>> icons # (audio files that are played by name when an application
>>>> requests # a sound icon).  If you have installed the free(b)soft
>>>> sound-icons # package, this is the directory where will they be
>>>> found.  If not # blank, the espeak Output Module will play them if
>>>> it finds a # file whose name matches the sound icon name.  If
>>>> blank, or no # matching file is found, the name of the sound icon
>>>> will be spoken.
>>>> 
>>>> EspeakSoundIconFolder "/usr/share/sounds/sound-icons/"
>>>> 
>>>> # Volume at which sound icons are played. EspeakSoundIconVolume 0
>>>> 
>>>> 
>>>> I also tried festival, but still to no avail ..
>>>> 
>>>> So the first question is .. are there any modules/backends that do
>>>> support playing sound-icons ?
>>>> 
>>>> Hope you can give me a pointer in the right direction !
>>>> 
>>>> -- Sander
>>>> 


Ok i finally determined what the problem is:

espeak relies on speech-dispatcher to return 0 for the uri_callback if it has to 
play the sound, if it gets 1 back, it will speak the name of the sound-icon 
instead.

But in speech-dispatcher src/modules/espeak.c:uri_callback() the return that 
returns 0 is ifdeffed:

        static int uri_callback(int type, const char *uri, const char *base)
        {
                int result = 1;
                if (type == 1) {
                        /* Audio icon */
        #if HAVE_SNDFILE
                        if (g_file_test(uri, G_FILE_TEST_EXISTS)) {
                                result = 0;
                        }
        #endif
                }
                return result;
        }

And Debians speech-dispatchers isn't compiled with libsndfiledev1, so it always 
returns 1.

But since the code in the ifdef has no relation with libsndfiledev, is it even 
needed in the first place ?

Both solutions make sound-icons work for me on Debian Jessie:
        - recompiling with libsndfiledev installed
        or      
        - removing the ifdef from uri_callback

But removing the ifdef as it seems pointless is looking like the best solution 
to me.

--
Sander





More information about the Tts-project mailing list