mirror of
https://github.com/aljazceru/Auto-GPT.git
synced 2025-12-17 22:14:28 +01:00
Adds the gTTS (Google Text-to-Speech) Python library as a fallback for text-to-speech conversion in the speak.py file. The changes were made to ensure that users can still convert text to speech even if the ElevenLabs API key is not set or if the API encounters an error. Additionally, the requirements.txt file has been updated to include the new gTTS dependency.
49 lines
1.3 KiB
Python
49 lines
1.3 KiB
Python
import os
|
|
from playsound import playsound
|
|
import requests
|
|
from config import Config
|
|
cfg = Config()
|
|
import gtts
|
|
|
|
|
|
# TODO: Nicer names for these ids
|
|
voices = ["ErXwobaYiN019PkySvjV", "EXAVITQu4vr4xnSDxMaL"]
|
|
|
|
tts_headers = {
|
|
"Content-Type": "application/json",
|
|
"xi-api-key": cfg.elevenlabs_api_key
|
|
}
|
|
|
|
def eleven_labs_speech(text, voice_index=0):
|
|
tts_url = "https://api.elevenlabs.io/v1/text-to-speech/{voice_id}".format(
|
|
voice_id=voices[voice_index])
|
|
formatted_message = {"text": text}
|
|
response = requests.post(
|
|
tts_url, headers=tts_headers, json=formatted_message)
|
|
|
|
if response.status_code == 200:
|
|
with open("speech.mpeg", "wb") as f:
|
|
f.write(response.content)
|
|
playsound("speech.mpeg")
|
|
os.remove("speech.mpeg")
|
|
return True
|
|
else:
|
|
print("Request failed with status code:", response.status_code)
|
|
print("Response content:", response.content)
|
|
return False
|
|
|
|
def gtts_speech(text):
|
|
tts = gtts.gTTS(text)
|
|
tts.save("speech.mp3")
|
|
playsound("speech.mp3")
|
|
os.remove("speech.mp3")
|
|
|
|
def say_text(text, voice_index=0):
|
|
if not cfg.elevenlabs_api_key:
|
|
gtts_speech(text)
|
|
else:
|
|
success = eleven_labs_speech()
|
|
if not success:
|
|
gtts_speech(text)
|
|
|