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:
| Aspecte | Firefox | Microsoft Edge |
|---|---|---|
| Motor de veu | Usa 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.conf | No té fitxer de configuració propi; gestiona les veus via l’API speechSynthesis |
| Idiomes disponibles | Depenen dels mòduls carregats (espeak-ng, pico, festival, etc.) | Depenen de les veus instal·lades al sistema o integrades al navegador |
| Comanda per veure veus | spd-say -L o espeak-ng --voices | speechSynthesis.getVoices() des de la consola del navegador |
| Integració amb TTS | Firefox → speech‑dispatcher | Edge → 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)
| Aspecte | Firefox | Microsoft Edge |
|---|---|---|
| Motor de veu | Usa 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.conf | No té fitxer de configuració propi; gestiona les veus via l’API speechSynthesis |
| Idiomes disponibles | Depenen dels mòduls carregats (espeak-ng, pico, festival, etc.) | Depenen de les veus instal·lades al sistema o integrades al navegador |
| Comanda per veure veus | spd-say -L o espeak-ng --voices | speechSynthesis.getVoices() des de la consola del navegador |
| Integració amb TTS | Firefox → speech‑dispatcher | Edge → 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.
| Objectiu | Acció |
|---|---|
| Que speech‑dispatcher trobi Ona | Posar el model al host (ja ho tens) |
| Que speech‑dispatcher cridi Piper dins Docker | Crear wrapper /usr/local/bin/piper-docker |
| Que Piper usi Ona | Editar piper-generic.conf amb PIPER_VOICE=/home/Miquel/tts-server/... |
| Que Firefox parli amb Ona | Reiniciar 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_VOICEamb 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.