Instal·la eSpeak-ng i i ffmpeg (Calibre) al teu Synology

s’ha de substituir gTTS per eSpeak-ng, et mostro com adaptar-la pas a pas per fer servir aquest motor localment i afegir un selector de veus reals.


🛠️ 1. Instal·la espeak-ng i ffmpeg al teu Synology

Si tens accés a apt o ipkg:

sudo apt install espeak-ng ffmpeg

🐍 2. Modifica generar_tts.py per fer servir espeak-ng

import sys
import os
import subprocess

text = sys.argv[1] if len(sys.argv) > 1 else "Text per defecte"
voice = sys.argv[2] if len(sys.argv) > 2 else "ca"  # idioma per defecte: català

base_dir = os.path.dirname(os.path.abspath(__file__))
output_wav = os.path.join(base_dir, "tts.wav")
output_mp3 = os.path.join(base_dir, "tts.mp3")

# 🗣️ Generar WAV amb eSpeak-ng
espeak_cmd = ["espeak-ng", "-v", voice, text, "--stdout"]
with open(output_wav, "wb") as wav_file:
    subprocess.run(espeak_cmd, stdout=wav_file)

# 🎧 Convertir a MP3 amb ffmpeg
subprocess.run(["ffmpeg", "-y", "-i", output_wav, output_mp3])

🌍 3. Actualitza index.php amb idiomes/veus disponibles

Substitueix la llista de veus per idiomes compatibles amb eSpeak-ng:

$voices = [
    "ca", // Català
    "es", // Espanyol
    "en", // Anglès
    "fr", // Francès
    "de", // Alemany
    "it", // Italià
    "pt", // Portuguès
    "ru", // Rus
    "ja", // Japonès
];

Pots afegir variants com ca+f3 o en+m1 per canviar el timbre (masculí/femení) si vols més control.


🧪 4. Prova-ho

Ara, quan seleccionis una veu (en realitat, un idioma o variant) des del formulari, es passarà com a paràmetre a espeak-ng, que generarà l’àudio amb la veu corresponent.


🎯 Vols més personalització?

  • Puc ajudar-te a llistar totes les veus disponibles amb espeak-ng --voices
  • O afegir un selector de velocitat i to
  • O fins i tot fer que el sistema recordi l’última veu usada

Vols que et prepari un script per mostrar totes les veus disponibles al teu sistema?

Deixa un comentari

L'adreça electrònica no es publicarà. Els camps necessaris estan marcats amb *

This site uses Akismet to reduce spam. Learn how your comment data is processed.