|
|
|
import asyncio |
|
import os |
|
import tempfile |
|
|
|
from openai import OpenAI |
|
|
|
|
|
OPENAI_API_KEY = os.environ.get("OPENAI_API_KEY") |
|
|
|
|
|
openai_client = OpenAI(api_key=OPENAI_API_KEY) |
|
|
|
def text_to_speech(text, voice, language): |
|
""" |
|
Chuyển đổi văn bản thành giọng nói bằng OpenAI API. |
|
""" |
|
try: |
|
response = openai_client.audio.speech.create( |
|
model="tts-1", |
|
voice=voice, |
|
input=text |
|
) |
|
|
|
with tempfile.NamedTemporaryFile(delete=False, suffix=".mp3") as temp_audio_file: |
|
for chunk in response.iter_bytes(chunk_size=4096): |
|
temp_audio_file.write(chunk) |
|
|
|
return temp_audio_file.name |
|
except Exception as e: |
|
return f"Lỗi khi chuyển đổi văn bản thành giọng nói: {str(e)}" |
|
|
|
async def async_text_to_speech(text, voice, language): |
|
""" |
|
Chuyển đổi văn bản thành giọng nói (bất đồng bộ). |
|
""" |
|
loop = asyncio.get_event_loop() |
|
return await loop.run_in_executor(None, text_to_speech, text, voice, language) |