You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
46 lines
1.3 KiB
46 lines
1.3 KiB
import subprocess
|
|
import os
|
|
import sys
|
|
|
|
TEXT = "This is a test of the text to speech conversion. If you hear this, the text file conversion is working."
|
|
WAV_TMP = "/tmp/tts_test_raw.wav"
|
|
WAV_FINAL_PATH = "/var/lib/asterisk/sounds/tts_test_final.wav"
|
|
WAV_FINAL_NAME = "tts_test_final"
|
|
NODE = "62394"
|
|
|
|
def run(cmd):
|
|
print(f"Executing: {cmd}")
|
|
try:
|
|
subprocess.run(cmd, shell=True, check=True)
|
|
except subprocess.CalledProcessError as e:
|
|
print(f"Error running command: {e}")
|
|
sys.exit(1)
|
|
|
|
def main():
|
|
print("--- Starting TTS Isolation Test ---")
|
|
|
|
# 1. Generate WAV from Text
|
|
print(f"1. Generating audio for text: '{TEXT}'")
|
|
run(f"pico2wave -w {WAV_TMP} \"{TEXT}\"")
|
|
|
|
# 2. Convert to Asterisk format (8kHz, 16bit, Mono)
|
|
print("2. Converting format with Sox...")
|
|
# Clean up old file if exists
|
|
if os.path.exists(WAV_FINAL_PATH):
|
|
os.remove(WAV_FINAL_PATH)
|
|
|
|
run(f"sox {WAV_TMP} -r 8000 -c 1 -b 16 -e signed-integer {WAV_FINAL_PATH}")
|
|
|
|
# 3. Fix permissions
|
|
print("3. Setting permissions...")
|
|
os.chmod(WAV_FINAL_PATH, 0o644)
|
|
|
|
# 4. Playback
|
|
print(f"4. Playing on node {NODE}...")
|
|
run(f"sudo /usr/sbin/asterisk -rx 'rpt playback {NODE} {WAV_FINAL_NAME}'")
|
|
|
|
print("--- Test Complete ---")
|
|
|
|
if __name__ == "__main__":
|
|
main()
|