[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