#!/bin/bash # --- 0. Load environment variables from .env file --- # This ensures any necessary credentials or configurations are loaded. if [ -f .env ]; then echo "Loading environment variables from .env" export $(grep -v '^#' .env | xargs) fi export LOG_LEVEL=DEBUG # --- 1. Define variables and configurations --- BASE_URL="http://127.0.0.1:8000" STT_ENDPOINT="/stt/transcribe" API_URL="${BASE_URL}${STT_ENDPOINT}" # --- 2. Start the FastAPI Server in the Background --- echo "--- Starting AI Hub Server ---" uvicorn app.main:app --host 127.0.0.1 --port 8000 & SERVER_PID=$! # Define a function to shut down the server and clean up. cleanup() { echo "" echo "--- Shutting Down Server (PID: $SERVER_PID) ---" kill $SERVER_PID } trap cleanup EXIT # --- 3. Wait for the server to be ready --- echo "Waiting for server to initialize..." for i in {1..20}; do if curl --fail --silent "$BASE_URL" &> /dev/null; then echo "✅ Server is ready." break fi sleep 1 if [ "$i" -eq 20 ]; then echo "❌ Error: Server failed to start in time. Exiting." exit 1 fi done # --- 4. Prepare the audio file for testing --- echo "" echo "--- Preparing audio file for testing ---" # Check if a file path was provided as an argument if [ -z "$1" ]; then echo "❌ Error: No audio file path provided." echo "Usage: $0 /path/to/your/audio.wav" exit 1 fi TEMP_AUDIO_FILE="$1" if [ ! -f "$TEMP_AUDIO_FILE" ]; then echo "❌ Error: The specified file '$TEMP_AUDIO_FILE' does not exist." exit 1 fi echo "✅ Using provided audio file: $TEMP_AUDIO_FILE" echo "" # --- 5. Test a successful transcription --- echo "--- Testing successful transcription with valid audio file ---" # We now explicitly specify the MIME type for the file using the curl -F flag syntax. # We also use the -f, --fail flag to ensure curl returns an error code on HTTP 4xx/5xx status. curl -s -f -X POST "$API_URL" \ -H "Content-Type: multipart/form-data" \ -F "audio_file=@$TEMP_AUDIO_FILE;type=audio/wav" | jq '.' # Check the exit status of the curl command # The return code is now more reliable thanks to the `-f` flag. if [ ${PIPESTATUS[0]} -eq 0 ]; then echo "" echo "✅ Success! Received a valid transcription response." else echo "" echo "❌ Failed to get a valid transcription response. Check the server logs for details." fi echo "" # --- Tests complete. ---