brailcom / brailcom/speechd

Audio Synchronization Glitches

Open
#1,032 4 comments 0 reactions 0 assignees View on GitHub
bug needinfo
Dominant language
C
Stars
331
Forks
92
Avg merge
2d 10h
Merged PRs (30d)
9

Description

### Steps to reproduce

Ubuntu 20.04.4
install from synaptic
speech dispatcher & plugins

### Obtained behavior

using firefox to play a YouTube video
has audio synchronization / clock issues.

pulseaudio is set to 48KHz, deamon.config

your software seem to be forcing 44.1Khz
also has 3 output interfaces, strange.

My Guess:
Pulse audio Sample Rate Converter goes crazy.

### Behavior information

Please follow the next step, to provide us with precious information about how things went wrong on your machine:

* Set `LogLevel` to 5 in your `/etc/speech-dispatcher/speechd.conf`
* Set `Debug` to 1 in your `/etc/speech-dispatcher/yourspeechmodule.conf` (e.g. `espeak-ng.conf`)
* Restart your computer to make sure it gets taken into account
* Reproduce the issue
* Make a copy of the `speech-dispatcher.log` file, it is usually found in `/run/user/1000/speech-dispatcher/log`. Also make a copy of `yourspeechmodule.log` (e.g. `espeak-ng.log`).
* Set `LogLevel` back to 3 in your `/etc/speech-dispatcher/speechd.conf`
* Attach the `speech-dispatcher.log` and `yourspeechmodule.log` file to your bug report.
* Also attach your `speechd.conf` file and `yourspeechdmodule.conf` file.

```
# 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 SocketPath below). 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"

# SocketPath 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
# $XDG_RUNTIME_DIR/speech-dispatcher/speechd.sock where $XDG_RUNTIME_DIR
# is the directory specified by the XDG Base Directory Specification.
# Do not change this unless you have a reason and know what you are doing.

# SocketPath "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 coming from localhost. If LocalhostAccessOnly is set to 0 it disables this
# access control. 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

# By default, Speech Dispatcher is configured to shut itself down after a period of
# time if no clients are connected. The timeout value is in seconds, and is started when
# the last client disconnects. A value of 0 disables the timeout.

# Timeout 5

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

# The LogLevel is a number between 0 and 5 specifying the
# verbosity of information to the logfile or screen
# 0 means nothing, 5 means everything (not recommended).

LogLevel 3

# The LogDir specifies where the Speech Dispatcher logs reside
# Specify "stdout" for standard console output
# or a custom log directory path. 'default' means
# 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, leave as "default" for standard logging

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

# The CustomLogFile allows logging all messages # regardless of
# 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 0

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

# DefaultPitch 0

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

# DefaultPitchRange 0

# The DefaultVolume controls 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
# configuration. 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 "en"

# ----- MESSAGE DISPATCHING CONTROL -----

# 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"

# Whether to use server-side symbols pre-processing by default.
# This controls whether the server should pre-process the messages to insert
# the appropriate words or if the output module is responsible for speaking
# symbols and punctuation.

# DefaultSymbolsPreprocessing 0

# 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 spelt
# unless set otherwise (this is usually not something you want to do.)

# DefaultSpelling Off

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

# -- AUDIO OUTPUT --

# Chooses between the possible sound output systems:
# "pulse" - PulseAudio
# "alsa" - Advanced Linux Sound System
# "oss" - Open Sound System
# "nas" - Network Audio System
# "libao" - A cross platform audio library
# Pulse audio is the default and recommended sound server. OSS and ALSA
# are only provided for compatibility with architectures that do not
# include Pulse Audio. NAS provides network transparency, but is not
# very well tested. libao is a cross platform library with plugins for
# different sound systems and provides alternative output for Pulse Audio
# and ALSA as well as for other backends.

# AudioOutputMethod "pulse"

# -- Pulse Audio parameters --

# Pulse audio server name or "default" for the default pulse server

#AudioPulseServer "default"

#AudioPulseMinLength 1764

# -- ALSA parameters --

# Audio device for ALSA output

#AudioALSADevice "default"

# -- OSS parameters --

# Audio device for OSS output

#AudioOSSDevice "/dev/dsp"

# -- NAS parameters --

# Route to the Network Audio System server when NAS
# is 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 access 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 "espeak-ng" "sd_espeak-ng" "espeak-ng.conf"
#AddModule "festival" "sd_festival" "festival.conf"
#AddModule "flite" "sd_flite" "flite.conf"
#AddModule "ivona" "sd_ivona" "ivona.conf"
#AddModule "pico" "sd_pico" "pico.conf"
#AddModule "espeak-generic" "sd_generic" "espeak-generic.conf"
#AddModule "espeak-ng-mbrola-generic" "sd_generic" "espeak-ng-mbrola-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 "pico-generic" "sd_generic" "pico-generic.conf"
#AddModule "ibmtts" "sd_ibmtts" "ibmtts.conf"
#AddModule "cicero" "sd_cicero" "cicero.conf"
#AddModule "kali" "sd_kali" "kali.conf"
#AddModule "mary-generic" "sd_generic" "mary-generic.conf"
#AddModule "baratinoo" "sd_baratinoo" "baratinoo.conf"
#AddModule "rhvoice" "sd_rhvoice" "rhvoice.conf"
#AddModule "voxin" "sd_voxin" "voxin.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-ng

# 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 which clients
# it should apply the settings to (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 "clients/*.conf"

# The DisableAutoSpawn option will disable the autospawn mechanism.
# Thus the server will not start automatically on requests from the clients
# DisableAutoSpawn

# Copyright (C) 2001-2009 Brailcom, o.p.s
# Copyright (C) 2009 Rui Batista
# Copyright (C) 2010 Andrei Kholodnyi
# Copyright (C) 2010 William Hubbs
# Copyright (C) 2010 Trevor Saunders
# Copyright (C) 2012 William Jon McCann
# Copyright (C) 2014 Rob Whyte
# Copyright (C) 2014-2016 Luke Yelavich
# Copyright (C) 2014 Hussain Jasim
# Copyright (C) 2017 Colomban Wendling
# Copyright (C) 2018 Raphaël POITEVIN
# Copyright (C) 2018 Florian Steinhardt
# Copyright (C) 2018 Samuel Thibault
#
# This program is free software; you can redistribute it and/or modify it under
# the terms of the GNU General Public License as published by the Free Software
# Foundation; either version 2 of the License, or (at your option) any later
# version.
#
# This program is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE. See the GNU General Public License for more details (file
# COPYING in the root directory).
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see .

```

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.