[Tts-project] Speech-dispatcher: do any modules/backends support playing sound-icons ?
Sander Eikelenboom
linux at eikelenboom.it
Thu May 21 20:53:45 UTC 2015
Hello Sander,
Thursday, May 21, 2015, 10:40:24 PM, you wrote:
> 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.
Hmm that seems to be incorrect, probably tested with a stale tree or something.
When returning 0, it seems to be speech-dispatches that is going to play the
sound instead of espeak, using the code in
src/modules/module_utils.c:module_play_file()
So the only solution seems to be for Debian to compile with libsndfiledev as
build dependency.
--
Sander
> --
> Sander
More information about the Tts-project
mailing list