WhisperDesktop может обрабатывать только один файл одновременно, поэтому я попытался создать сценарий, но не смог. ⇐ Python

Программы на Python
Anonymous
WhisperDesktop может обрабатывать только один файл одновременно, поэтому я попытался создать сценарий, но не смог.

Сообщение Anonymous »

WhisperDesktop — это модель Whisper от OpenAI для задач распознавания речи.
WhisperDeskTop.exe в Windows10
Используется графический процессор
WhisperDeskTop.exe .mkv в .srt, но только по одному
Поэтому, если я хочу конвертировать все видео, мне остается только продолжать нажимать. Затем я попытался написать сценарий.
В Power Shell с установленным Python3.8 создайте виртуальную среду Python с помощью python -m venv thename('thename' — это просто имя среды). Затем активируйте среду, используя .\Scripts\Activate.ps1. Как показано на рисунке,
я также устанавливаю NVIDIA CUDA, CUDNN, ffmpeg, pytorch, загружаю модель openAI, например, большую или среднюю, на свой ноутбук. . Все они проверены.
В чем проблема?

Код: Выделить всё

import os
import subprocess
import time
from tqdm import tqdm
from concurrent.futures import ThreadPoolExecutor

video_directory = ""

ffmpeg_command = 'ffmpeg -i "{}" -f wav -vn "{}"'

whisper_command = 'whispercli  -gpu -nt -m "D:\\Whisper\\model\\ggml-large-v3-turbo.bin" -l en  -nt -osrt -f "{}"'

def convert_video_to_audio(video_path, audio_path, video_name):
ffmpeg_output = subprocess.check_output(
ffmpeg_command.format(video_path, audio_path),
shell=True,
stderr=subprocess.DEVNULL,
)

def gen_audio_srt(audio_path, video_name):
whisper_output = subprocess.check_output(
whisper_command.format(audio_path), shell=True, encoding="utf-8"
)

def process_video(video_file):
video_path = os.path.join(video_directory, video_file)
video_name = os.path.splitext(video_file)[0]
audio_path = os.path.join(video_directory, video_name + ".wav")
srt_path = os.path.join(video_directory, video_name + ".srt")

if os.path.exists(srt_path):
print(f"srt is exisits.")
return 0

convert_video_to_audio(video_path, audio_path, video_name)
gen_audio_srt(audio_path, video_name)
os.remove(audio_path)
return 1

def process_videos():
start_time = time.time()
n = 0
video_files = [
f
for f in os.listdir(video_directory)
if f.endswith((".mp4", ".avi", ".mkv", ".flv", ".mov"))
]

with ThreadPoolExecutor() as executor:
results = list(tqdm(executor.map(process_video, video_files), total=len(video_files), desc="processing... "))

n = sum(results)
end_time = time.time()
print("{:d}videos,token times: {:.2f}s".format(n, end_time - start_time))

if __name__ == "__main__":
path = ""
while True:
path = input("dir: ")
if os.path.exists(path):
break
else:
print(f"{path}path maybe wrong...")
video_directory = path
process_videos()
Пожалуйста, помогите мне закончить скрипт Python. Всем спасибо.

Подробнее здесь: https://stackoverflow.com/questions/790 ... make-a-scr

Вернуться в «Python»