Veus de speech-dispatcher de firefox

grep -n "AddModule" /etc/speech-dispatcher/speechd.conf

Miquel@Miquel-PC:$ grep -n «AddModule» /etc/speech-dispatcher/speechd.conf
248:# Each AddModule line loads an output module.
249:# Syntax: AddModule «name» «binary» «configuration» «logfile»
258:#AddModule «espeak» «sd_espeak» «espeak.conf»
259:#AddModule «espeak-ng» «sd_espeak-ng» «espeak-ng.conf»
260:#AddModule «festival» «sd_festival» «festival.conf»
261:#AddModule «flite» «sd_flite» «flite.conf»
262:#AddModule «ivona» «sd_ivona» «ivona.conf»
263:#AddModule «pico» «sd_pico» «pico.conf»
264:#AddModule «espeak-ng-mbrola-generic» «sd_generic» «espeak-ng-mbrola-generic.conf»
265:#AddModule «espeak-mbrola-generic» «sd_generic» «espeak-mbrola-generic.conf»
266:#AddModule «swift-generic» «sd_generic» «swift-generic.conf»
267:#AddModule «epos-generic» «sd_generic» «epos-generic.conf»
268:#AddModule «dtk-generic» «sd_generic» «dtk-generic.conf»
269:#AddModule «ibmtts» «sd_ibmtts» «ibmtts.conf»
270:#AddModule «cicero» «sd_cicero» «cicero.conf»
271:#AddModule «kali» «sd_kali» «kali.conf»
272:#AddModule «mary-generic» «sd_generic» «mary-generic.conf»
273:#AddModule «baratinoo» «sd_baratinoo» «baratinoo.conf»
274:#AddModule «rhvoice» «sd_rhvoice» «rhvoice.conf»
275:#AddModule «voxin» «sd_voxin» «voxin.conf»
280:#AddModule «dummy» «sd_dummy» «»
287:# AddModule «testing»
290:# must use one of the names of the modules loaded with AddModule.
349:#AddModule «piper» «sd_generic» «/etc/speech-dispatcher/modules/piper-generic.conf»
Miquel@Miquel-PC:
$

AspecteFirefoxMicrosoft Edge
Motor de veuUsa speech‑dispatcher del sistema (Linux)Usa el motor intern de Chromium (Google TTS) o el del sistema si està disponible
Configuració/etc/speech-dispatcher/speechd.confNo té fitxer de configuració propi; gestiona les veus via l’API speechSynthesis
Idiomes disponiblesDepenen dels mòduls carregats (espeak-ng, pico, festival, etc.)Depenen de les veus instal·lades al sistema o integrades al navegador
Comanda per veure veusspd-say -L o espeak-ng --voicesspeechSynthesis.getVoices() des de la consola del navegador
Integració amb TTSFirefox → speech‑dispatcherEdge → motor Chromium (pot usar speech‑dispatcher si el sistema ho exposa)

Per defecte, el Festival s’instal·la en aquestes ubicacions estàndard (sistema Debian):

Contingut Ruta
Executable principal /usr/bin/festival
Veus (dades) /usr/share/festival/voices/
Llibreries i suport /usr/lib/festival/
Configuració global /etc/festival.scm
Config del mòdul speech-dispatcher /etc/speech-dispatcher/modules/festival.conf


Molt bona observació, Miquel 👏

El que has mostrat és la configuració del servei speech‑dispatcher del teu sistema Linux, que és el motor que Firefox (i altres aplicacions) fan servir per convertir text en veu. Però Microsoft Edge no utilitza speech‑dispatcher directament — té un comportament diferent:

🧩 Diferència clau entre Firefox i Edge (en Linux)

AspecteFirefoxMicrosoft Edge
Motor de veuUsa speech‑dispatcher del sistema (Linux)Usa el motor intern de Chromium (Google TTS) o el del sistema si està disponible
Configuració/etc/speech-dispatcher/speechd.confNo té fitxer de configuració propi; gestiona les veus via l’API speechSynthesis
Idiomes disponiblesDepenen dels mòduls carregats (espeak-ng, pico, festival, etc.)Depenen de les veus instal·lades al sistema o integrades al navegador
Comanda per veure veusspd-say -L o espeak-ng --voicesspeechSynthesis.getVoices() des de la consola del navegador
Integració amb TTSFirefox → speech‑dispatcherEdge → motor Chromium (pot usar speech‑dispatcher si el sistema ho exposa)

🔧 En el teu cas

Veig que tens activat el mòdul:

Codi

AddModule "piper" "sd_generic" "/etc/speech-dispatcher/modules/piper-generic.conf"

Això vol dir que el teu speech‑dispatcher usa Piper, un motor de veu neuronal molt més natural que espeak-ng. Firefox pot aprofitar-lo si està ben configurat, però Edge normalment no el fa servir — ell usa les seves pròpies veus integrades.

🗣️ Si vols que Edge parli amb les mateixes veus que speech‑dispatcher

Pots provar d’executar Edge amb la variable d’entorn següent (només en Linux):

bash

export SPEECHD_ADDRESS=unix_socket:/run/speech-dispatcher/speechd.sock
microsoft-edge

Això força Edge a intentar comunicar-se amb speech‑dispatcher. No tots els sistemes ho suporten, però en Deepin o Debian pot funcionar.

Vols que t’expliqui com verificar si Edge està realment usant speech‑dispatcher o el seu motor intern? Et puc mostrar una prova ràpida amb JavaScript per comprovar-ho.



ObjectiuAcció
Que speech‑dispatcher trobi OnaPosar el model al host (ja ho tens)
Que speech‑dispatcher cridi Piper dins DockerCrear wrapper /usr/local/bin/piper-docker
Que Piper usi OnaEditar piper-generic.conf amb PIPER_VOICE=/home/Miquel/tts-server/...
Que Firefox parli amb OnaReiniciar speech‑dispatcher

Aquí tens, Miquel, un post complet, estructurat i llest per publicar al teu bloc, explicant la integració de Piper (veu Ona) amb speech‑dispatcher en Linux, incloent l’ús de models fora del contenidor Docker.

He escrit el post com si fos per Beseit i una mica de xirigol: clar, pràctic, amb passos verificables i sense misteris.

🟦 Integrar Piper (veu Ona) amb Speech‑Dispatcher en Linux

Funcionant amb models fora del Docker i accessible per Firefox, Orca i aplicacions TTS del sistema

Durant molt de temps, fer servir veus neuronals en Linux ha estat complicat: motors antics com espeak-ng o festival no ofereixen la qualitat que molts usuaris necessiten. Amb l’arribada de Piper, un motor TTS neuronal lleuger i de gran qualitat, la situació ha canviat radicalment.

En aquest article explico com integrar Piper (i concretament la veu catalana Ona) amb speech‑dispatcher, de manera que Firefox, Orca, LibreOffice i qualsevol aplicació que utilitzi TTS del sistema pugui parlar amb una veu natural.

A més, ho fem en un escenari real: el model Ona està dins un contenidor Docker, però speech‑dispatcher necessita accés directe al model. Aquí tens la solució completa.

🟥 El problema: speech‑dispatcher no pot veure dins Docker

Speech‑dispatcher només pot accedir a fitxers del sistema host. Si el model de Piper (per exemple ca_ES-upc_ona-medium.onnx) està dins Docker, speech‑dispatcher no el pot carregar.

Per tant:

  • ❌ No podem apuntar directament a /models/... dins Docker
  • ❌ No podem fer servir PIPER_VOICE amb un camí intern del contenidor
  • ✔️ Necessitem que el model estigui accessible des del host

Afortunadament, Piper permet executar el motor des de Docker, però el model ha d’estar fora.

🟦 Solució correcta (i la que funciona)

1) Col·locar el model Ona al sistema host

En el nostre cas, el model ja és accessible:

Codi

/home/Miquel/tts-server/ca_ES-upc_ona-medium.onnx

Perfecte: speech‑dispatcher ja pot veure aquest fitxer.

2) Crear un “wrapper” perquè speech‑dispatcher pugui cridar Piper dins Docker

Creem un script que executi Piper dins el contenidor:

Codi

sudo nano /usr/local/bin/piper-docker

Contingut:

bash

#!/bin/bash
docker exec -i piper piper "$@"

Fem executable:

Codi

sudo chmod +x /usr/local/bin/piper-docker

Ara tenim un “binari virtual” que speech‑dispatcher pot cridar com si fos Piper.

3) Configurar el mòdul Piper de speech‑dispatcher

Editem:

Codi

sudo nano /etc/speech-dispatcher/modules/piper-generic.conf

I configurem:

Codi

PIPER_BINARY="/usr/local/bin/piper-docker"
PIPER_VOICE="/home/Miquel/tts-server/ca_ES-upc_ona-medium.onnx"

Opcionalment, podem ajustar altres paràmetres:

Codi

PIPER_RATE=1.0
PIPER_VOLUME=1.0
PIPER_PITCH=1.0

4) Activar el mòdul Piper a speech‑dispatcher

Al fitxer principal:

Codi

sudo nano /etc/speech-dispatcher/speechd.conf

Assegura que tens:

Codi

AddModule "piper" "sd_generic" "/etc/speech-dispatcher/modules/piper-generic.conf"

I que no tens altres mòduls en conflicte (espeak, pico, festival…).

5) Reiniciar el servei

Codi

sudo systemctl restart speech-dispatcher

6) Provar la veu Ona

Codi

spd-say -l ca "Hola Miquel, sóc la veu Ona."

Si sona natural i clara → ja ho tens integrat.

🟩 Resultat final

Amb aquesta configuració:

  • Firefox parla amb Piper (veu Ona)
  • Orca parla amb Piper
  • LibreOffice pot llegir documents amb Ona
  • Qualsevol aplicació GTK o Qt que utilitzi TTS del sistema també
  • El model Ona es manté fora del Docker, però el motor Piper s’executa dins Docker
  • Tot funciona de manera transparent i estable

🟦 Notes finals

  • Microsoft Edge en Linux no usa speech‑dispatcher per defecte; usa el motor TTS de Chromium.
  • Firefox sí que usa speech‑dispatcher, per això és el navegador ideal per aquesta integració.
  • Si vols que Edge també utilitzi Piper, cal un ajust extra amb variables d’entorn, però no sempre funciona.

Si vols, Miquel, puc preparar-te:

  • el fitxer complet piper-generic.conf llest per copiar‑enganxar
  • un script d’instal·lació automàtica
  • o un post de seguiment explicant com fer que Edge també utilitzi TTS del sistema

Només digues què vols afegir al bloc.