Spaces:
Runtime error
Runtime error
| import os | |
| import subprocess | |
| from elevenlabs import generate, play | |
| from elevenlabs import set_api_key | |
| from elevenlabs import generate, stream | |
| from dotenv import load_dotenv | |
| load_dotenv() | |
| account_sid = os.environ["ELEVENLABS_API_KEY"] | |
| voice_id="2OviOUQc1JsQRQgNkVBj" | |
| model_id="eleven_monolingual_v1" | |
| set_api_key(account_sid) | |
| def stream_tts(prompt): | |
| audio_stream = generate( | |
| text=prompt, | |
| voice=voice_id, | |
| model=model_id, | |
| stream_chunk_size=4096, | |
| stream=True, | |
| ) | |
| return audio_stream | |
| prompts=[ | |
| "erm", | |
| "Cabbages, my dear friend!", | |
| "Did you know that the world's largest cabbage weighed 62.71 kilograms?", | |
| "Simply remarkable!", | |
| "How are you today?", | |
| ] | |
| mpv_command = ["mpv", "--no-cache", "--no-terminal", "--", "fd://0"] | |
| mpv_process = subprocess.Popen( | |
| mpv_command, | |
| stdin=subprocess.PIPE, | |
| stdout=subprocess.DEVNULL, | |
| stderr=subprocess.DEVNULL, | |
| ) | |
| load_chunks = False | |
| load_chunks = os.path.exists("chunks.pkl") | |
| # check if chunks.pkl exists | |
| if load_chunks: | |
| # try open chunks | |
| with open("chunks.pkl", "rb") as f: | |
| import pickle | |
| chunks = pickle.load(f) | |
| for chunk in chunks: | |
| mpv_process.stdin.write(chunk) | |
| mpv_process.stdin.flush() | |
| else: | |
| chunks = [] | |
| for prompt in prompts: | |
| for chunk in stream_tts(prompt): | |
| if chunk is not None: | |
| chunks.append(chunk) | |
| mpv_process.stdin.write(chunk) # type: ignore | |
| mpv_process.stdin.flush() # type: ignore | |
| # save chunks to file as a pickled list of bytes | |
| with open("chunks.pkl", "wb") as f: | |
| import pickle | |
| pickle.dump(chunks, f) | |
| with open("chunks.mp3", "wb") as f: | |
| for chunk in chunks: | |
| f.write(chunk) | |
| if mpv_process.stdin: | |
| mpv_process.stdin.close() | |
| mpv_process.wait() |