|
@@ -47,6 +47,18 @@ LINE_TOKEN = 'o8dqdVL2k8aiWO4jy3pawZamBu53bbjoSh2u0GJ7F0j'
|
|
|
|
|
|
router = APIRouter()
|
|
|
|
|
|
+def select_voice(lang:str, gender:str='Female'):
|
|
|
+ if "-" in lang:
|
|
|
+ local = lang
|
|
|
+ lang = lang.split("-")[0]
|
|
|
+ voices = asyncio.run(VoicesManager.create())
|
|
|
+ if local:
|
|
|
+ voice = voices.find(Gender=gender, Language=lang, Locale=local)
|
|
|
+ else:
|
|
|
+ voice = voices.find(Gender=gender, Language=lang)
|
|
|
+
|
|
|
+ return voice
|
|
|
+
|
|
|
def gen_prompt(content:str):
|
|
|
client = OpenAI(base_url="http://192.168.192.84:8080/v1", api_key='choozmo9')
|
|
|
|
|
@@ -182,6 +194,7 @@ async def wait_finish(model, email, texts, lang):
|
|
|
ws['A1'] = '大標'
|
|
|
ws['B1'] = '字幕'
|
|
|
ws['C1'] = '素材'
|
|
|
+ ws['D1'] = '聲音'
|
|
|
td = Path(f'/tmp/{datetime.datetime.now().strftime("%Y%m%d%H%M%S-td")}')
|
|
|
td.mkdir(exist_ok=False)
|
|
|
dir = td/f'{datetime.datetime.now().strftime("%Y%m%d%H%M%S")}'
|
|
@@ -200,6 +213,7 @@ async def wait_finish(model, email, texts, lang):
|
|
|
print("after", str(img_path))
|
|
|
ws['B'+ str(i+2)] = re.sub(punctuation, r"\\", text)
|
|
|
ws['C'+ str(i+2)] = img_path.name
|
|
|
+ ws['D2'] = select_voice(lang)
|
|
|
excel_path = Path(dir/'script.xlsx')
|
|
|
wb.save(excel_path)
|
|
|
output_dir = '/tmp'
|