Sí! Hi ha diverses alternatives per reproduir l’àudio generat per Piper:
Alternatives des del terminal:
1. Guardar a fitxer i reproduir:
# Generar i guardar echo "Text" | piper --model /config/ca_ES-upc_ona-medium.onnx --output_file /tmp/audio.wav # Reproduir amb aplay aplay /tmp/audio.wav # O amb paplay (PulseAudio) paplay /tmp/audio.wav
2. Utilitzar paplay (PulseAudio):
echo "Text" | piper --model /config/ca_ES-upc_ona-medium.onnx --output_file - | \ paplay --raw --rate=22050 --format=s16le --channels=1
3. Utilitzar ffplay (FFmpeg):
echo "Text" | piper --model /config/ca_ES-upc_ona-medium.onnx --output_file - | \ ffplay -f s16le -ar 22050 -ac 1 -i -
4. Utilitzar sox (Sound eXchange):
echo "Text" | piper --model /config/ca_ES-upc_ona-medium.onnx --output_file - | \ play -t raw -r 22050 -b 16 -c 1 -
5. Python amb pydub o playsound:
import subprocess
from pydub import AudioSegment
from pydub.playback import play
# Generar àudio
result = subprocess.run([
'docker', 'exec', 'piper', 'bash', '-c',
'echo "Text" | piper --model /config/ca_ES-upc_ona-medium.onnx --output_file -'
], capture_output=True)
# Reproduir
audio = AudioSegment.from_raw(io.BytesIO(result.stdout),
sample_width=2,
frame_rate=22050,
channels=1)
play(audio)
Quina prefereixes utilitzar al teu server.py?
aplay(la que ja fas servir) ✅paplay(millor per PulseAudio)ffplay(més versàtil)- Guardar a fitxer primer
- Una altra?