siddhartharya commited on
Commit
064b28a
·
verified ·
1 Parent(s): acded7a

Update utils.py

Browse files
Files changed (1) hide show
  1. utils.py +12 -13
utils.py CHANGED
@@ -6,15 +6,15 @@ import tiktoken
6
  import json
7
  import re
8
  import tempfile
9
- import requests
10
  from bs4 import BeautifulSoup
 
11
 
12
  groq_client = Groq(api_key=os.environ["GROQ_API_KEY"])
13
  tokenizer = tiktoken.get_encoding("cl100k_base")
14
- VOICERSS_API_KEY = os.environ["VOICERSS_API_KEY"]
15
 
16
  class DialogueItem(BaseModel):
17
- speaker: Literal["John", "Lily"]
18
  text: str
19
 
20
  class Dialogue(BaseModel):
@@ -57,9 +57,14 @@ def generate_script(system_prompt: str, input_text: str, tone: str, target_lengt
57
  Generate a complete, well-structured podcast script that:
58
  1. Starts with a proper introduction
59
  2. Covers the main points from the input text
60
- 3. Has a natural flow of conversation between John and Lily
61
  4. Concludes with a summary and sign-off
62
  5. Fits within the {word_limit} word limit for the target length of {target_length}
 
 
 
 
 
63
 
64
  Ensure the script is not abruptly cut off and forms a complete conversation.
65
  """
@@ -95,14 +100,8 @@ def generate_script(system_prompt: str, input_text: str, tone: str, target_lengt
95
  return dialogue
96
 
97
  def generate_audio(text: str, speaker: str) -> str:
98
- voice = "John" if speaker == "John" else "Lily"
99
- url = f"http://api.voicerss.org/?key={VOICERSS_API_KEY}&hl=en-us&v={voice}&src={text}"
100
-
101
- response = requests.get(url)
102
- if response.status_code != 200:
103
- raise Exception(f"Error generating audio: {response.text}")
104
-
105
- # Save the raw audio data
106
  with tempfile.NamedTemporaryFile(delete=False, suffix=".mp3") as temp_audio:
107
- temp_audio.write(response.content)
108
  return temp_audio.name
 
6
  import json
7
  import re
8
  import tempfile
9
+ from gtts import gTTS
10
  from bs4 import BeautifulSoup
11
+ import requests
12
 
13
  groq_client = Groq(api_key=os.environ["GROQ_API_KEY"])
14
  tokenizer = tiktoken.get_encoding("cl100k_base")
 
15
 
16
  class DialogueItem(BaseModel):
17
+ speaker: Literal["Sarah", "Maria"]
18
  text: str
19
 
20
  class Dialogue(BaseModel):
 
57
  Generate a complete, well-structured podcast script that:
58
  1. Starts with a proper introduction
59
  2. Covers the main points from the input text
60
+ 3. Has a natural flow of conversation between Sarah (American accent) and Maria (British accent)
61
  4. Concludes with a summary and sign-off
62
  5. Fits within the {word_limit} word limit for the target length of {target_length}
63
+ 6. Strongly emphasizes the {tone} tone throughout the conversation
64
+
65
+ For a humorous tone, include jokes, puns, and playful banter.
66
+ For a casual tone, use colloquial language and make it sound like a conversation between college students.
67
+ For a formal tone, maintain a professional podcast style with well-structured arguments and formal language.
68
 
69
  Ensure the script is not abruptly cut off and forms a complete conversation.
70
  """
 
100
  return dialogue
101
 
102
  def generate_audio(text: str, speaker: str) -> str:
103
+ tld = 'com' if speaker == "Sarah" else 'co.uk'
104
+ tts = gTTS(text=text, lang='en', tld=tld)
 
 
 
 
 
 
105
  with tempfile.NamedTemporaryFile(delete=False, suffix=".mp3") as temp_audio:
106
+ tts.save(temp_audio.name)
107
  return temp_audio.name