[CBLX] speech-dispatcher+mbrola... besoin d'aide svp!

[ Thread Index | Date Index | More lists.tuxfamily.org/carrefourblinux Archives ]


Bonjour à tous. 

....Rien n'est plus frustrant que de coincer alors qu'on arrive quasiment au
bout du parcours du combattant ! ! ! 
Peut-être que vous pouvez encore m'inspirer là où ça coince ?!

J'avance pas mal du tout sur mon projet d'avoir Mbrola pilotée par 
Speech-Dispatcher sous Orca;
pour autant, je n'obtiens de sortie vocale *que* en mode test{1} (sous la
console), pas encore sous Gnome-Orca itself... : pour parler en termes
culinaires, ma liaison avec Orca ne prend pas :-) 


Voici les étapes que j'ai suivies: 

* j'ai d'abord installé sur ma Debian les packages speech-dispatcher ainsi 
que python-speechd, ce dernier étant indispensable et pourtant pas installé
d'office...

* J'ai obté pour une conf perso (cad au niveau du user),
c'est permis et permet d'avoir par ex. une conf fr pour un user fr, it pour 
un user it, etc:

j'ai donc lancé  spd-conf  et ai ainsi obtenu un répo ~/.speech-dispatcher
contenant lui-même les sous-répos conf/, conf/modules/ et conf/clients/, 
dans lesquels j'ai modifié (comme indiqué dans un HowTo) qqs éléments:

- d'abord dans ~/.speech-dispatcher/conf/speechd.conf{2}:
  j'ai suivit la suggestion de mettre le param  AudioOutputMethod  sur
  alsa  uniquement, alors qu'il était sur  pulse,alsa  initialement;

  j'ai également décommenté la ligne  AddModule  pointant vers
  espeak-mbrola-generic ... 
  AddModule "espeak-mbrola-generic" "sd_generic" "espeak-mbrola-generic.conf" 
  ... afin de pouvoir sélectionner ce choix sous la conf
  (section vocale) d'Orca.

  	(NB: j'arrive à atteindre cette partie sans problème alors
  	qu'initialement j'avais un problème pour pouvoir choisir entre 
	eSpeak et Speech-Dispatcher; j'ignore si python-speechd y est pour 
	quelque chose, je le suppose...)

  Enfin, j'ai aussi ajouté la ligne:
  Include "clients/orca.conf" 
  à l'image d'un client emacs.conf déjà présent dans le même sous-répo. 

- Ensuite, dans ~/.speech-dispatcher/conf/modules/espeak-mbrola-generic.conf{3}:
  j'ai modifié la ligne de pilotage d'Mbrooa en suivant l'indication du
  HowTo; voici ce que cela donne:

#rm by user#GenericExecuteSynth \
#rm by user#"echo \'$DATA\' | espeak -v mb-$VOICE $PUNCT -s $RATE -a $VOLUME | mbrola -v $VOLUME -e /usr/share/mbrola/$VOICE/$VOICE - -.au | $PLAY_COMMAND
GenericExecuteSynth \
"echo \"$DATA\" | espeak -v $VOICE -s $RATE -a $VOLUME -p $PITCH $PUNCT --stdin | /usr/bin/mbrola /usr/share/mbrola/nl2/nl2 - - | aplay -r16000 -fS16"

- Enfin, dans ~/.speech-dispatcher/conf/clients/orca.conf{4}, toujours
  suivant les indications du HowTo, j'y ai mis ce qui suit:

# Local configuration for Orca
BeginClient "*:orca:*"
     DefaultLanguage "nl"
     DefaultCapLetRecognition "none"
EndClient


Voilà, tout y est, j'ai mis les fichiers, voir { }, en pj ! Peut-être que
qq'un de plus expérimenté peut me dire pourquoi quand je troque 
eSpeak pour Speech-Dispatcher Orca reste muette!  

Aldo. 

Attachment: test-mbrola-nl2.sh
Description: Bourne shell script

# Global configuration for Speech Dispatcher
# ==========================================

# -----SYSTEM OPTIONS-----

# CommunicationMethod specifies the method to be used by Speech Dispatcher to communicate with
# its clients. Two basic methods are "unix_socket" and "inet_socket".
#
# unix_socket -- communication over Unix sockets represented by a file in the
# filesystem (see SocketName bellow). This method works only locally, but is
# prefered for standard session setup, where every user runs his own instance of Speech
# Dispatcher to get voice feedback on his own computer.
#
# inet_socket -- alternatively, you can start Speech Dispatcher on
# a TCP port and connect to it via hostname/port. This allows for a more
# flexible setup, where you can use Speech Dispatcher over network
# from different machines. See also the Port and LocalhostAccessOnly
# configuration variables.
#
# CommunicationMethod "unix_socket"

# SocketName is either "default" or a full path to the filesystem
# where the driving Unix socket file should be created in case the
# CommunicationMethod is set to "unix_socket". The default is
# TMPDIR+speechd-sock-UID where TMPDIR is the default temp dir
# location on the system and UID the user id who starts Speech Dispatcher
# (e.g. /tmp/speechd-sock-1005 for a user # whose uid is 1005).
# Do not change this unless you have a reason and know what you are doing.

# SocketName "default"

# The Port on which Speech Dispatcher should be available to clients if the "inet_socket"
# communication method is used.

# Port 6560

# By default, if "inet_socket" communication method is used, the specified port is opened only
# for connections comming from localhost. If LocalhostAccessOnly is set to 0 it disables this
# access controll. It means that the port will be accessible from all computers on the
# network. If you turn off this option, please make sure you set up some system rules on what
# computers are and are not allowed to access the Speech Dispatcher port.

# LocalhostAccessOnly 1

# -----LOGGING CONFIGURATION-----

# The LogLevel is a number between 0 and 5 that specifies
# how much of the logging information should be printed
# out on the screen or in the logfile (see LogFile)
# 0 means nothing, 5 means everything (not recommended).

LogLevel  3

# The LogDir specifies where Speech Dispatcher writes its logging messages
# (status information, error messages, etc.).  Specify "stdout" for
# standard console output or a directory path. 'default' means that
# the logs are written to the default destination (e.g. a preconfigured
# system directory or the home directory if .speech-dispatcher is present)
# DO NOT COMMENT OUT THIS OPTION, SET IT TO "default" if you do not
# want to influence it.

LogDir  "default"
#LogDir  "/var/log/speech-dispatcher/"
#LogDir  "stdout"

# The CustomLogFile allows logging all messages of the given kind,
# regardless their priority, to the given destination.

#CustomLogFile "protocol" "/var/log/speech-dispatcher/speech-dispatcher-protocol.log"

# ----- VOICE PARAMETERS -----

# The DefaultRate controls how fast the synthesizer is going to speak.
# The value must be between -100 (slowest) and +100 (fastest), default
# is 0.

DefaultRate   -1

# The DefaultPitch controls the pitch of the synthesized voice.  The
# value must be between -100 (lowest) and +100 (highest), default is
# 0.

DefaultPitch   -2

# The DefaultVolume constrols the default volume of the voice.  It is
# a value between -100 (softly) and +100 (loudly).  Currently, +100
# maps to the default volume of the synthesizer.

DefaultVolume 100

# The DefaultVoiceType controls which voice type should be used by
# default.  Voice types are symbolic names which map to particular
# voices provided by the synthesizer according to the output module
# configuratuion.  Please see the synthesizer-specific configuration
# in etc/speech-dispatcher/modules/ to see which voices are assigned to
# different symbolic names.  The following symbolic names are
# currently supported: MALE1, MALE2, MALE3, FEMALE1, FEMALE2, FEMALE3,
# CHILD_MALE, CHILD_FEMALE

# DefaultVoiceType  "MALE1"

# The Default language with which to speak

DefaultLanguage   nl


# ----- MESSAGE DISPATCHING CONTROLL -----

# The DefaultClientName specifies the name of a client who didn't
# introduce himself at the beginning of an SSIP session.

# DefaultClientName  "unknown:unknown:unknown"

# The Default Priority. Use with caution, normally this shouldn't be
# changed globally (at this place)

# DefaultPriority  "text"

# The DefaultPauseContext specifies by how many index marks a speech
# cursor should return when resuming after a pause. This is roughly
# equivalent to the number of sentences before the place of the
# execution of pause that will be repeated.

# DefaultPauseContext 0

# -----SPELLING/PUNCTUATION/CAPITAL LETTERS  CONFIGURATION-----

# The DefaultPunctuationMode sets the way dots, comas, exclamation
# marks, question marks etc. are interpreted.  none: they are ignored
# some: some of them are sent to synthesis (see
# DefaultPunctuationSome) all: all punctuation marks are sent to
# synthesis

# DefaultPunctuationMode "none"

# The DefaultCapLetRecognition: if set to "spell", capital letters
# should be spelled (e.g. "capital b"), if set to "icon",
# capital letters are indicated by inserting a special sound
# before them but they should be read normally, it set to "none"
# capital letters are not recognized (by default)

# DefaultCapLetRecognition  "none"

# The DefaultSpelling: if set to On, all messages will be spelled
# unless set otherwise (this is usually not something you want to do.)

# DefaultSpelling  Off

# ----- AUDIO CONFIGURATION -----------

# -- AUDIO OUTPUT --

# Chooses between three possible sound output systems:
#       "oss"   - Open Sound System
#       "alsa"  - Advanced Linux Sound System
#       "nas"   - Network Audio System
#       "pulse" - PulseAudio
# ALSA is default and recommended. The recent implementations
# support mixing of multiple streams. OSS is only provided
# for compatibility with architectures that do not include ALSA.
# NAS is an audio server with higher level of control over
# your audio stream, with the possibility to stream your audio
# over the network to a different computer and other advanced
# features. (The NAS backend is not very well tested however.)
# PulseAudio is a sound server for POSIX and WIN32 systems. 
#

#AudioOutputMethod   pulse,alsa
AudioOutputMethod   alsa

# What ALSA device to use when Advanced Linux Sound Architecture is
# chosen for the audio output.

#AudioALSADevice "default"

# -- PulseAudio parameters --

#AudioPulseServer "default"

# Maximum length of the buffer

#AudioPulseMaxLength -1

# Target length of the buffer
# The server tries to assure that at least FestivalPulseTargetLength
# bytes are always available in the buffer

#AudioPulseTargetLength 4410

# Pre-buffering
# The server does not start with playback before at least 
# FestivalPulsePrebuffering bytes are available in the buffer

#AudioPulsePreBuffering -1

# Minimum request
# The server does not request less than FestivalPulseMinRequest bytes
# from the client, instead waits until the buffer is free enough to
# request more bytes at once

#AudioPulseMinRequest -1

# -- OSS parameters --

# What OSS device to use when Open Sound System is
# chosen for the audio output.

#AudioOSSDevice "/dev/dsp"

# -- NAS parameters --

# Route to the Network Audio System server when NAS
# was chosen for the audio output. Note that NAS
# server doesn't need to run on your machine,
# you can use it also over network (for instance
# when working on remote machines).

#AudioNASServer "tcp/localhost:5450"



# -----OUTPUT MODULES CONFIGURATION-----

# Each AddModule line loads an output module.
#  Syntax: AddModule "name" "binary" "configuration" "logfile"
#  - name is the name under which you can acces this module
#  - binary is the path to the binary executable of this module,
#    either relative (to lib/speech-dispatcher-modules/) or absolute
#  - configuration is the path to the config file of this module,
#    either relative (to etc/speech-dispatcher/modules/) or absolute

AddModule "espeak"       "sd_espeak"   "espeak.conf"
AddModule "festival"     "sd_festival"  "festival.conf"
AddModule "flite"        "sd_flite"     "flite.conf"
#AddModule "ivona"	 "sd_ivona"    "ivona.conf"
#AddModule "espeak-generic" "sd_generic" "espeak-generic.conf"
AddModule "espeak-mbrola-generic" "sd_generic" "espeak-mbrola-generic.conf"
#AddModule "swift-generic" "sd_generic" "swift-generic.conf"
#AddModule "epos-generic" "sd_generic"   "epos-generic.conf"
#AddModule "dtk-generic"  "sd_generic"   "dtk-generic.conf"
#AddModule "ibmtts"       "sd_ibmtts"    "ibmtts.conf"
#AddModule "cicero"        "sd_cicero"     "cicero.conf"

# DO NOT REMOVE the following line unless you have
# a specific reason -- this is the fallback output module
# that is only used when no other modules are in use
AddModule "dummy"         "sd_dummy"      ""

# The output module testing doesn't actually connect to anything. It
# outputs the requested commands to standard output and reads
# responses from stdandard input. This way, Speech Dispatcher's
# communication with output modules can be tested easily.

# AddModule "testing"

# The DefaultModule selects which output module is the default.  You
# must use one of the names of the modules loaded with AddModule.

DefaultModule   espeak

# The LanguageDefaultModule selects which output modules are prefered
# for specified languages.

#LanguageDefaultModule "en"  "espeak"
#LanguageDefaultModule "cs"  "festival"
#LanguageDefaultModule "es"  "festival"

# -----CLIENT SPECIFIC CONFIGURATION-----

# Here you can include the files with client-specific configuration
# for different types of clients. They must contain one or more sections with
# this structure:
#     BeginClient "emacs:*"
#          DefaultPunctuationMode "some"
#          ...and/or some other settings
#     EndClient
# The parameter of BeginClient tells Speech Dispatcher to which clients
# it should apply this settings (it does glob-style matching, you can use
# * to match any number of characters and ? to match one character)

# There are some sample client settings

Include "/etc/speech-dispatcher/clients/*.conf"
Include "clients/*.conf"
Include "clients/orca.conf"

# This line below is to enable autospawning, without breaking everything else read by dotconf.
# AutoSpawn
# Espeak mbrola output module is based on the generic plugin for Speech
# Dispatcher. It means there is no code written explicitly for
# this plugin, all the specifics are handled in this configuration
# and we call a simple command line client to perform the actual
# synthesis. Use this config file with the sd_generic output module.
#
# IMPORTANT: The audio output method relies on an audio playback
# utility (play, aplay, paplay for OSS, ALSA or Pulse)
# being installed. If this is not the case, consider installing it
# or replace the $PLAY_COMMAND string in the GenericExecuteString below
# with play, paplay or similar.
#
# GenericExecuteSynth is the shell command that should be
# executed in order to say some message. This command must
# stop saying the message on SIGKILL, otherwise it's useless.
# You can use the variables $LANGUAGE, $VOICE, $PITCH and $RATE
# which will be substituted for the appropriate value (you
# can modify this value, see other parameters).
# The command can be split into more lines, if necessary, using '\'.
#remmed by user#GenericExecuteSynth \
#remmed by user#"echo \'$DATA\' | espeak -v mb-$VOICE $PUNCT -s $RATE -a $VOLUME | mbrola -v $VOLUME -e /usr/share/mbrola/$VOICE/$VOICE - -.au | $PLAY_COMMAND
GenericExecuteSynth \
"echo \"$DATA\" | espeak -v $VOICE -s $RATE -a $VOLUME -p $PITCH $PUNCT --stdin | /usr/bin/mbrola /usr/share/mbrola/nl2/nl2 - - | aplay -r16000 -fS16"

# The following three items control punctuation levels None, Some, and All.
# Each of these values will be substituted into the $PUNCT variable depending
# on the value passed to speech dispatcher from applications.
# Note that if an empty string is specified, then $PUNCT will be blank 
# which is a default situation for espeak.
 
GenericPunctNone " "
GenericPunctSome "--punct=\"()[]{};:\""
GenericPunctAll "--punct"

# GenericStripPunctChars is a list (enclosed in doublequotes) of
# all the characters that should be replaced by whitespaces in
# order not to be badly handled by the output module or misinterpreted
# by shell.
# GenericStripPunctChars  ""

# If the language you need to pass in $LANG is different
# from the standard ISO language code, you can specify
# which string to use instead. If you wish to use
# other than ISO charset for the specified language,
# you can add it's name (as accepted by iconv) as a
# third parameter in doublequotes.


GenericLanguage		  "af" "af" "utf-8"
GenericLanguage		  "cs" "cs" "utf-8"
GenericLanguage		  "de" "de" "utf-8"
GenericLanguage		  "el" "el" "utf-8"
GenericLanguage		  "en" "en" "utf-8"
GenericLanguage		  "es" "es" "utf-8"
GenericLanguage		  "fr" "fr" "utf-8"
GenericLanguage		  "hr" "hr" "utf-8"
GenericLanguage		  "hu" "hu" "utf-8"
GenericLanguage		  "it" "it" "utf-8"
GenericLanguage		  "la" "la" "utf-8"
GenericLanguage		  "nl" "nl" "utf-8"
GenericLanguage		  "pl" "pl" "utf-8"
GenericLanguage		  "ro" "ro" "utf-8"
GenericLanguage		  "sv" "sv" "utf-8"
GenericLanguage		  "sw" "sw" "utf-8"
GenericLanguage		  "gr" "gr" "utf-8"
GenericLanguage		  "cr" "cr" "utf-8"
GenericLanguage		  "hu" "hu" "utf-8"
GenericLanguage		  "id" "id" "utf-8"

# AddVoice specifies which $VOICE string should be assigned to
# each language and symbolic voice name. All the voices you want
# to use must be specified here. This list will likely not be
# up-to-date, please check eSpeak documentation and add the voices
# you want to use. Or better use the native espeak module ('espeak'
# not 'espeak-generic')

AddVoice        "en"    "MALE1"		"en1"
AddVoice        "en"    "MALE2"		"us2"
AddVoice        "en"    "MALE3"		"us3"
AddVoice        "en"    "FEMALE1"	"us1"

AddVoice        "de"    "MALE1"         "de4"
AddVoice        "de"    "MALE2"         "de6"
AddVoice        "de"    "FEMALE1"       "de5"
AddVoice        "de"    "FEMALE2"       "de7"

AddVoice        "fr"    "MALE1"       "fr1"
AddVoice        "fr"    "FEMALE1"     "fr4"

AddVoice        "it"    "MALE1"		"it3"
AddVoice        "it"    "FEMALE1"	"it4"

AddVoice        "es"    "MALE1"		"es1"
AddVoice        "es"    "MALE2"		"es2"

AddVoice        "sw"    "MALE1"         "sw1"
AddVoice        "sw"    "FEMALE1"    	"sw2"

AddVoice        "gr"    "MALE1"       	"gr1"
AddVoice        "gr"    "MALE2"       	"gr2"

AddVoice        "cs"    "MALE1"	      	"cz2"
AddVoice        "pl"    "MALE1"       	"pl1"
AddVoice        "ro"    "MALE1"	      	"ro1"
AddVoice        "af"    "MALE1"       	"af1"
AddVoice        "cr"    "MALE1"       	"cr1"
AddVoice        "hu"    "MALE1"       	"hu1"
AddVoice        "la"    "MALE1"       	"la1"
AddVoice        "id"    "MALE1"       	"id1"

# These parameters set _rate_, _pitch_, and _volume_ conversion. This is
# part of the core of the definition of this generic output
# module for this concrete synthesizer, it's not intended to
# be modified by common users.
# The resulting rate (or pitch) has the form:
#       (speechd_rate * GenericRateMultiply) + GenericRateAdd
# while speechd_rate is a value between -100 (lowest) and +100 (highest)
# You have to define some meaningful conversion for each synthesizer

# Here's the mapping from SSIP (Speech Dispatcher) to ESpeak (v1.10):
#
#           SSIP Range  SSIP Default    ESpeak/MBROLA Range ESpeak Default
#           ----------- ------------    ------------         --------------
# Rate      -100 to 100     0           80 to 320       160
# Pitch     -100 to 100     0            0 to 99         50
# Volume    -100 to 100     0            0 to 2          --
#
# The SSIP defaults are actually controlled via DefaultRate, DefaultPitch, and
# DefaultVolume in the speechd.conf file.

GenericRateAdd          160
GenericPitchAdd         50
GenericVolumeAdd        1

# (These values are multiplied by 100, because DotConf currently
# doesn't support floats. So you can write 0.85 as 85 and so on.)

GenericRateMultiply     160
GenericPitchMultiply    50
GenericVolumeMultiply   1

# If the client program can't handle floats, you will have to
# use these two options to force integers as the parameters
# 1 means force integers, 0 means do nothing (write floats).

GenericRateForceInteger     1
GenericPitchForceInteger    1
GenericVolumeForceInteger   0

# Note that SSIP rates < -50 are spoken at -50.

# Debug turns debugging on or off
# See speechd.conf for information where debugging information is stored
Debug 0
#remmed by user#GenericExecuteSynth \
#remmed by user#"echo \'$DATA\' | espeak -v mb-$VOICE $PUNCT -s $RATE -a $VOLUME | mbrola -v $VOLUME -e /usr/share/mbrola/$VOICE/$VOICE - -.au | $PLAY_COMMAND
GenericExecuteSynth \
"echo \"$DATA\" | espeak -v $VOICE -s $RATE -a $VOLUME -p $PITCH $PUNCT --stdin | /usr/bin/mbrola /usr/share/mbrola/nl2/nl2 - - | aplay -r16000 -fS16"
# Local configuration for Orca
BeginClient "*:orca:*"
     DefaultLanguage "nl"
     DefaultCapLetRecognition "none"
EndClient



Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/