Slyracoon23 commited on
Commit
bcba472
·
verified ·
1 Parent(s): b577c7d

Upload folder using huggingface_hub

Browse files
Files changed (5) hide show
  1. .env +2 -0
  2. README.md +3 -9
  3. output.mp3 +0 -0
  4. requirements.txt +2 -0
  5. text_to_speech.py +119 -0
.env ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ ELEVENLABS_JWT_TOKEN=eyJhbGciOiJSUzI1NiIsImtpZCI6IjhkNzU2OWQyODJkNWM1Mzk5MmNiYWZjZWI2NjBlYmQ0Y2E1OTMxM2EiLCJ0eXAiOiJKV1QifQ.eyJuYW1lIjoiRWFybCDigJxTbHlSYWNvb24yMuKAnSBQb3R0ZXJzIiwicGljdHVyZSI6Imh0dHBzOi8vbGgzLmdvb2dsZXVzZXJjb250ZW50LmNvbS9hL0FBY0hUdGRPaDNlQmVBelFxLW5UQU9GYkN2UE50RjNuVllqUXRMTVV0T1JYdEszTT1zOTYtYyIsIndvcmtzcGFjZV9pZCI6ImJiYWNjZjE5ZTQyZDQ0Yzc5ZmMyYmExYzFkNzVjNzcwIiwiaXNzIjoiaHR0cHM6Ly9zZWN1cmV0b2tlbi5nb29nbGUuY29tL3hpLWxhYnMiLCJhdWQiOiJ4aS1sYWJzIiwiYXV0aF90aW1lIjoxNzI4Mjg2OTgxLCJ1c2VyX2lkIjoiMUY1MnBzR3hrdWcyMnVhTUtjNmJLT0QyTWRnMSIsInN1YiI6IjFGNTJwc0d4a3VnMjJ1YU1LYzZiS09EMk1kZzEiLCJpYXQiOjE3Mjg3MjIxMTUsImV4cCI6MTcyODcyNTcxNSwiZW1haWwiOiJlYXJsLnBvdHRlcnNAZ21haWwuY29tIiwiZW1haWxfdmVyaWZpZWQiOnRydWUsImZpcmViYXNlIjp7ImlkZW50aXRpZXMiOnsiZ29vZ2xlLmNvbSI6WyIxMDMxNjU5ODY5NzA0OTgyMDY4OTgiXSwiZW1haWwiOlsiZWFybC5wb3R0ZXJzQGdtYWlsLmNvbSJdfSwic2lnbl9pbl9wcm92aWRlciI6Imdvb2dsZS5jb20ifX0.JnUgu7HncMmxUfXV4ZfQviKobZNYjEKbBrQpzuCKp6WOPJfS_Ph1AzJ1liyCQSKkygATb-jPyLPn3ZlFMV6Lx78hAMR-CddFu4m2e59x2h8kP37iJbosbXzR3_403hHWkQT5yqauwPTGsthR6XKe1--qmWyDMDs6_8e7xq3r4BWzRe2Ju4na3OMiahtuEt1S-0ebAwkhHzZ9sIcbICbx8hVNrUa2Lmdw5pob-TZwAiG7cPFI8BQOH9stKyb1hT0vAMseqs4fiAOQ3ern8rBrI8cycKilGlEvlX8fwlZftUio1F7jVlNCQ8GsP62pOK6zwwZjr5mJLHZhtMKeyHCDtA
2
+ ELEVENLABS_API_KEY=sk_fdda75ef4f2c2e36636094dc39454ca3ca7d51b51691955e
README.md CHANGED
@@ -1,12 +1,6 @@
1
  ---
2
- title: Gradio Voice Mail From A Friend
3
- emoji: 🐢
4
- colorFrom: red
5
- colorTo: pink
6
  sdk: gradio
7
- sdk_version: 5.0.2
8
- app_file: app.py
9
- pinned: false
10
  ---
11
-
12
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
1
  ---
2
+ title: gradio-voice-mail-from-a-friend
3
+ app_file: text_to_speech.py
 
 
4
  sdk: gradio
5
+ sdk_version: 4.44.1
 
 
6
  ---
 
 
output.mp3 ADDED
Binary file (223 kB). View file
 
requirements.txt ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ elevenlabs
2
+ gradio
text_to_speech.py ADDED
@@ -0,0 +1,119 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ from elevenlabs import save, Voice, VoiceSettings
3
+ from elevenlabs.client import ElevenLabs
4
+ import os
5
+ import requests
6
+ import json
7
+ from dotenv import load_dotenv
8
+
9
+ # Load environment variables from .env file
10
+ load_dotenv()
11
+
12
+ # Instantiate ElevenLabs client with API key from environment variables
13
+ eleven_api_key = os.getenv("ELEVENLABS_API_KEY")
14
+
15
+ if not eleven_api_key:
16
+ raise ValueError("ELEVENLABS_API_KEY environment variable not set.")
17
+
18
+ # Initialize ElevenLabs client
19
+ eleven = ElevenLabs(api_key=eleven_api_key)
20
+
21
+ def get_available_voices():
22
+ try:
23
+ response = eleven.voices.get_all()
24
+ voices = response.voices
25
+ return [(f"{voice.name} ({voice.voice_id})", voice.voice_id) for voice in voices]
26
+ except Exception as e:
27
+ print(f"Error fetching voices: {str(e)}")
28
+ return [("Error fetching voices", "")]
29
+
30
+ def text_to_speech(text, voice_id, stability, similarity_boost, style, use_speaker_boost):
31
+ try:
32
+ url = f"https://api.elevenlabs.io/v1/text-to-speech/{voice_id}"
33
+
34
+ headers = {
35
+ 'Authorization': f'Bearer {os.getenv("ELEVENLABS_JWT_TOKEN")}',
36
+ 'Content-Type': 'application/json'
37
+ }
38
+
39
+ payload = json.dumps({
40
+ "text": text,
41
+ "model_id": "eleven_multilingual_v2",
42
+ "voice_settings": {
43
+ "stability": stability,
44
+ "similarity_boost": similarity_boost,
45
+ "style": style,
46
+ "use_speaker_boost": use_speaker_boost
47
+ }
48
+ })
49
+
50
+ response = requests.post(url, headers=headers, data=payload)
51
+ response.raise_for_status()
52
+
53
+ output_file = "output.mp3"
54
+ with open(output_file, 'wb') as f:
55
+ f.write(response.content)
56
+
57
+ return output_file
58
+ except Exception as e:
59
+ print(f"An error occurred during text-to-speech conversion: {str(e)}")
60
+ return None
61
+
62
+ with gr.Blocks() as demo:
63
+ gr.Markdown("# Text-to-Speech Converter")
64
+ gr.Markdown("Enter text, select a voice, and convert it to speech.")
65
+
66
+ with gr.Row():
67
+ with gr.Column():
68
+ text_input = gr.Textbox(label="Enter text to convert to speech", lines=5)
69
+ voice_choices = get_available_voices()
70
+ voice_input = gr.Dropdown(
71
+ choices=voice_choices,
72
+ label="Select voice",
73
+ value=voice_choices[0][1] if voice_choices else None
74
+ )
75
+ stability_input = gr.Slider(
76
+ minimum=0.0,
77
+ maximum=1.0,
78
+ value=0.75,
79
+ step=0.01,
80
+ label="Stability"
81
+ )
82
+ similarity_boost_input = gr.Slider(
83
+ minimum=0.0,
84
+ maximum=1.0,
85
+ value=0.75,
86
+ step=0.01,
87
+ label="Similarity Boost"
88
+ )
89
+ style_input = gr.Slider(
90
+ minimum=0.0,
91
+ maximum=1.0,
92
+ value=0.0,
93
+ step=0.01,
94
+ label="Style"
95
+ )
96
+ use_speaker_boost_input = gr.Checkbox(
97
+ label="Use Speaker Boost",
98
+ value=True
99
+ )
100
+ submit_btn = gr.Button("Convert to Speech")
101
+
102
+ with gr.Column():
103
+ audio_output = gr.Audio(label="Generated Speech")
104
+
105
+ submit_btn.click(
106
+ fn=text_to_speech,
107
+ inputs=[
108
+ text_input,
109
+ voice_input,
110
+ stability_input,
111
+ similarity_boost_input,
112
+ style_input,
113
+ use_speaker_boost_input
114
+ ],
115
+ outputs=audio_output
116
+ )
117
+
118
+ if __name__ == "__main__":
119
+ demo.launch(share=True)