diff options
Diffstat (limited to 'tools/tts.sh')
-rwxr-xr-x | tools/tts.sh | 115 |
1 files changed, 0 insertions, 115 deletions
diff --git a/tools/tts.sh b/tools/tts.sh deleted file mode 100755 index 2065a3d..0000000 --- a/tools/tts.sh +++ /dev/null @@ -1,115 +0,0 @@ -#!/bin/bash - -# Function to display usage information -usage() { - echo "Usage: $0 -l <lang> -v <voice> -s <speed> [--play] \"<text>\"" - echo " -l|--lang : Specify the language (french|english)" - echo " -v|--voice : Specify the voice" - echo " -s|--speed : Specify the speed (0.0 > 3.0, default is 1.0)" - echo " --play : Play the generated audio file using ffplay" - echo " <text> : The text to synthesize" - exit 1 -} - -# Function to check if a value is a valid float between 0 and 3.0 -is_valid_float() { - local value=$1 - # Check if the value is a valid number - if [[ $value =~ ^-?[0-9]+(\.[0-9]+)?$ ]]; then - # Check if the value is between 0 and 3.0 - if (($(echo "$value >= 0" | bc -l))) && (($(echo "$value <= 3.0" | bc -l))); then - return 0 - fi - fi - return 1 -} - -# Check for required environment variable -if [[ -z "${LLM_API_KEY}" ]]; then - echo "The environment variable LLM_API_KEY is not set." - echo 'You can use the following command: export $(xargs < ../.env))' - exit 1 -fi - -# Default values -speed=1.0 -host=${TTS_API_HOST:-"http://localhost:8000"} -play_audio=false - -# Parse command line arguments -while [[ $# -gt 0 ]]; do - case $1 in - -l | --lang) - lang="$2" - shift 2 - ;; - -v | --voice) - voice="$2" - shift 2 - ;; - -s | --speed) - speed="$2" - shift 2 - ;; - --play) - play_audio=true - shift 1 - ;; - -h | --help) - usage - ;; - -* | --*) - echo "Unknown option $1" - usage - ;; - *) - break - ;; - esac -done - -# Optionally grab the text after the options -if [[ $# -gt 0 ]]; then - text="$*" -else - echo "Error: Text to synthesize is required." - usage -fi - -# Generate a timestamp -timestamp=$(date +"%Y%m%d_%H%M%S") - -# Construct the filename with the current date and time -filename="speech_${timestamp}.wav" - -# Validate language and voice options -if [[ -z "$lang" || -z "$voice" ]]; then - echo "Error: Language (-l) and voice (-v) options are required." - usage -fi - -# Check if the speed is valid -if ! is_valid_float "$speed"; then - echo "Error: Speed must be a float between 0.0 and 3.0." - exit 1 -fi - -# Fetch the audio file from the API -http_status_code=$(curl -s "${host}/v1/audio/speech" -o "${filename}" -w "%{http_code}" -H "Authorization: Bearer ${LLM_API_KEY}" -H "Content-Type: application/json" -d "{\"model\": \"tts-1\",\"input\": \"${text}\",\"voice\": \"${voice}\",\"response_format\": \"wav\",\"speed\": ${speed}}") - -# Check the response code for successful HTTP request -if [[ "$http_status_code" -ne 200 ]]; then - echo "Error: Failed to fetch audio file. Received HTTP status code: $http_status_code" - exit 1 -fi - -# Optionally play the generated WAV file with ffplay -if [ "$play_audio" = true ]; then - if ! command -v ffplay &>/dev/null; then - echo "Error: ffplay is not installed. Please install mpv to play audio files." - exit 1 - fi - ffplay ${filename} -nodisp -nostats -hide_banner -autoexit -v quiet -fi - -echo "Audio file '$filename' generated successfully." |