3
3
import re
4
4
from os import path
5
5
6
+ from edge_tts import SubMaker
6
7
from loguru import logger
7
8
8
9
from app .config import config
@@ -87,10 +88,10 @@ def generate_audio(task_id, params, video_script):
87
88
2. check if the network is available. If you are in China, it is recommended to use a VPN and enable the global traffic mode.
88
89
""" .strip ()
89
90
)
90
- return None , None
91
+ return None , None , None
91
92
92
93
audio_duration = math .ceil (voice .get_audio_duration (sub_maker ))
93
- return audio_file , audio_duration
94
+ return audio_file , audio_duration , sub_maker
94
95
95
96
96
97
def generate_subtitle (task_id , params , video_script , sub_maker , audio_file ):
@@ -157,7 +158,7 @@ def get_video_materials(task_id, params, video_terms, audio_duration):
157
158
158
159
159
160
def generate_final_videos (
160
- task_id , params , downloaded_videos , audio_file , subtitle_path
161
+ task_id , params , downloaded_videos , audio_file , subtitle_path
161
162
):
162
163
final_video_paths = []
163
164
combined_video_paths = []
@@ -209,6 +210,9 @@ def start(task_id, params: VideoParams, stop_at: str = "video"):
209
210
logger .info (f"start task: { task_id } , stop_at: { stop_at } " )
210
211
sm .state .update_task (task_id , state = const .TASK_STATE_PROCESSING , progress = 5 )
211
212
213
+ if type (params .video_concat_mode ) is str :
214
+ params .video_concat_mode = VideoConcatMode (params .video_concat_mode )
215
+
212
216
# 1. Generate script
213
217
video_script = generate_script (task_id , params )
214
218
if not video_script :
@@ -242,7 +246,7 @@ def start(task_id, params: VideoParams, stop_at: str = "video"):
242
246
sm .state .update_task (task_id , state = const .TASK_STATE_PROCESSING , progress = 20 )
243
247
244
248
# 3. Generate audio
245
- audio_file , audio_duration = generate_audio (task_id , params , video_script )
249
+ audio_file , audio_duration , sub_maker = generate_audio (task_id , params , video_script )
246
250
if not audio_file :
247
251
sm .state .update_task (task_id , state = const .TASK_STATE_FAILED )
248
252
return
@@ -259,7 +263,7 @@ def start(task_id, params: VideoParams, stop_at: str = "video"):
259
263
return {"audio_file" : audio_file , "audio_duration" : audio_duration }
260
264
261
265
# 4. Generate subtitle
262
- subtitle_path = generate_subtitle (task_id , params , video_script , None , audio_file )
266
+ subtitle_path = generate_subtitle (task_id , params , video_script , sub_maker , audio_file )
263
267
264
268
if stop_at == "subtitle" :
265
269
sm .state .update_task (
@@ -318,3 +322,14 @@ def start(task_id, params: VideoParams, stop_at: str = "video"):
318
322
task_id , state = const .TASK_STATE_COMPLETE , progress = 100 , ** kwargs
319
323
)
320
324
return kwargs
325
+
326
+
327
+ if __name__ == "__main__" :
328
+ task_id = "task_id"
329
+ params = VideoParams (
330
+ video_subject = "金钱的作用" ,
331
+ voice_name = "zh-CN-XiaoyiNeural-Female" ,
332
+ voice_rate = 1.0 ,
333
+
334
+ )
335
+ start (task_id , params , stop_at = "video" )
0 commit comments