Shanulhaq commited on
Commit
6e94458
·
verified ·
1 Parent(s): 88b0de1

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +60 -19
app.py CHANGED
@@ -7,10 +7,10 @@
7
  import os
8
  import gradio as gr
9
  import openai
10
- from elevenlabs import generate, set_api_key
11
  import tempfile
12
  import logging
13
  from dotenv import load_dotenv
 
14
 
15
  # Load environment variables from .env file
16
  load_dotenv()
@@ -33,9 +33,36 @@ if not eleven_labs_api_key:
33
  else:
34
  logger.info("Eleven Labs API key is set.")
35
 
36
- # Set the API keys
37
  openai.api_key = openai_api_key
38
- set_api_key(eleven_labs_api_key)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
39
 
40
  def process_audio(audio_file, target_language):
41
  try:
@@ -51,8 +78,14 @@ def process_audio(audio_file, target_language):
51
  try:
52
  # Translate text using OpenAI's ChatGPT API
53
  messages = [
54
- {"role": "system", "content": f"You are a helpful assistant that translates English to {target_language}."},
55
- {"role": "user", "content": f"Please translate the following text to {target_language}: {user_text}"}
 
 
 
 
 
 
56
  ]
57
 
58
  response = openai.ChatCompletion.create(
@@ -67,24 +100,33 @@ def process_audio(audio_file, target_language):
67
  return "Error in generating translation.", None
68
 
69
  try:
70
- # Convert translated text to speech using Eleven Labs
71
- audio = generate(
72
- text=response_text,
73
- voice="Rachel", # You can choose different voices available in Eleven Labs
74
- model='eleven_multilingual_v1' # Use the multilingual model
75
- )
76
-
77
- # Save the audio to a temporary file
78
- temp_audio_file = tempfile.NamedTemporaryFile(delete=False, suffix='.mp3')
79
- with open(temp_audio_file.name, 'wb') as f:
80
- f.write(audio)
81
-
82
  logger.info("Text-to-speech conversion successful.")
83
  except Exception as e:
84
  logger.error(f"Error in text-to-speech conversion: {e}")
85
  return "Error in text-to-speech conversion.", None
86
 
87
- return response_text, temp_audio_file.name
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
88
 
89
  # Create Gradio interface
90
  iface = gr.Interface(
@@ -112,4 +154,3 @@ try:
112
  except Exception as e:
113
  logger.error(f"Failed to launch Gradio interface: {e}")
114
  raise
115
-
 
7
  import os
8
  import gradio as gr
9
  import openai
 
10
  import tempfile
11
  import logging
12
  from dotenv import load_dotenv
13
+ import requests
14
 
15
  # Load environment variables from .env file
16
  load_dotenv()
 
33
  else:
34
  logger.info("Eleven Labs API key is set.")
35
 
36
+ # Set the API key for OpenAI
37
  openai.api_key = openai_api_key
38
+
39
+ def text_to_speech_elevenlabs(text, voice="Rachel"):
40
+ url = f"https://api.elevenlabs.io/v1/text-to-speech/{voice}"
41
+
42
+ headers = {
43
+ "Accept": "audio/mpeg",
44
+ "Content-Type": "application/json",
45
+ "xi-api-key": eleven_labs_api_key
46
+ }
47
+
48
+ data = {
49
+ "text": text,
50
+ "model_id": "eleven_multilingual_v1",
51
+ "voice_settings": {
52
+ "stability": 0.5,
53
+ "similarity_boost": 0.75
54
+ }
55
+ }
56
+
57
+ response = requests.post(url, json=data, headers=headers)
58
+ response.raise_for_status()
59
+
60
+ # Save the audio content
61
+ temp_audio_file = tempfile.NamedTemporaryFile(delete=False, suffix='.mp3')
62
+ with open(temp_audio_file.name, 'wb') as f:
63
+ f.write(response.content)
64
+
65
+ return temp_audio_file.name
66
 
67
  def process_audio(audio_file, target_language):
68
  try:
 
78
  try:
79
  # Translate text using OpenAI's ChatGPT API
80
  messages = [
81
+ {
82
+ "role": "system",
83
+ "content": f"You are a helpful assistant that translates English to {target_language}."
84
+ },
85
+ {
86
+ "role": "user",
87
+ "content": f"Please translate the following text to {target_language}: {user_text}"
88
+ }
89
  ]
90
 
91
  response = openai.ChatCompletion.create(
 
100
  return "Error in generating translation.", None
101
 
102
  try:
103
+ # Convert translated text to speech using Eleven Labs API directly
104
+ temp_audio_file_name = text_to_speech_elevenlabs(response_text)
 
 
 
 
 
 
 
 
 
 
105
  logger.info("Text-to-speech conversion successful.")
106
  except Exception as e:
107
  logger.error(f"Error in text-to-speech conversion: {e}")
108
  return "Error in text-to-speech conversion.", None
109
 
110
+ return response_text, temp_audio_file_name
111
+
112
+ # Optional: Function to list available voices
113
+ def list_available_voices():
114
+ url = "https://api.elevenlabs.io/v1/voices"
115
+
116
+ headers = {
117
+ "Accept": "application/json",
118
+ "xi-api-key": eleven_labs_api_key
119
+ }
120
+
121
+ response = requests.get(url, headers=headers)
122
+ response.raise_for_status()
123
+ voices = response.json()
124
+ print("Available voices:")
125
+ for voice in voices['voices']:
126
+ print(f"Name: {voice['name']}, Voice ID: {voice['voice_id']}")
127
+
128
+ # Uncomment the following line to list available voices
129
+ # list_available_voices()
130
 
131
  # Create Gradio interface
132
  iface = gr.Interface(
 
154
  except Exception as e:
155
  logger.error(f"Failed to launch Gradio interface: {e}")
156
  raise