git+https://github.com/pyannote/pyannote-audio
git+https://github.com/huggingface/transformers.git@v4.34.1
openai==0.28
ffmpeg-python
pandas==1.5.0
tokenizers==0.14
torch==2.1.1
torchaudio==2.1.1
tqdm==4.64.1
EasyNMT==2.0.2
psutil==5.9.2
requests
pydub
docxtpl
faster-whisper==0.10.0
git+https://github.com/openai/whisper.git
Вот все, что я импортирую:
from faster_whisper import WhisperModel
from datetime import datetime, timedelta
from time import time
from pathlib import Path
import pandas as pd
import os
from pydub import AudioSegment
import numpy as np
from sklearn.cluster import AgglomerativeClustering
from sklearn.metrics import silhouette_score
import requests
import torch
import pyannote.audio
from pyannote.audio.pipelines.speaker_verification import PretrainedSpeakerEmbedding
from pyannote.audio import Audio
from pyannote.core import Segment
import wave
import contextlib
import psutil
import openai
from codecs import decode
from docxtpl import DocxTemplate
Раньше я использовал torch и torchaudio в их последних версиях, но вчера они получили обновление (15 декабря 2023 г., выпущена версия 2.1.2). Я предположил, что ошибка, которую я получаю, была вызвана обновлением, поэтому я прикрепил их к версии, в которой работал мой код (v2.1.1) 2 дня назад. Очевидно, это не сработало.

Все работало 2 дня назад, и я ничего не менял в своем блокноте. Единственное, что могло измениться, — это зависимости, которые я использовал, но использование предыдущих версий не решило мою проблему. Вот фрагмент кода, который выдает ошибку:
def EETDT(audio_path, whisper_model, num_speakers, output_name="diarization_result", selected_source_lang="eng", transcript=None):
"""
Uses Whisper to seperate audio into segments and generate transcripts.
segment.
Speech Recognition is based on models from OpenAI Whisper https://github.com/openai/whisper
Speaker diarization model and pipeline from by https://github.com/pyannote/pyannote-audio
audio_path : str -> path to wav file
whisper_model : str -> small/medium/large/large-v2/large-v3
num_speakers : int -> number of speakers in audio (0 to let the function determine it)
output_name : str -> Desired name of the output file
selected_source_lang : str -> language's code
"""
audio_name = audio_path.split("/")[-1].split(".")[0]
model = WhisperModel(whisper_model, compute_type="int8")
time_start = time()
if(audio_path == None):
raise ValueError("Error no video input")
print("Input file:", audio_path)
if not audio_path.endswith(".wav"):
print("Submitted audio isn't in wav format. Starting conversion...")
audio = AudioSegment.from_file(audio_path)
audio_suffix = audio_path.split(".")[-1]
new_path = audio_path.replace(audio_suffix,"wav")
audio.export(new_path, format="wav")
audio_path = new_path
print("Converted to wav:", new_path)
try:
# Get duration
with contextlib.closing(wave.open(audio_path,'r')) as f:
frames = f.getnframes()
rate = f.getframerate()
duration = frames / float(rate)
if duration
Подробнее здесь: https://stackoverflow.com/questions/776 ... -be-loaded