Почему счетчик в цикле for языка Python не добавляет единицу за итерацию?

Я строю скрипт попарного сравнения эмбедингов голосов, чтобы посчитать метрику: как часто ошибается система, когда не может распознать 2 записи одного и того же человека.

В левой части рисунка ниже представлена структура папок: в каждой папке spk1, spk2 и т.д. лежит по 4 файла с голосами одного человека (в каждой директории - разные люди). Сравниваем голоса внутри папки друг с другом.

Структура папок

У меня 2 ошибки:

  1. то и дело ловлю исключение, которое будто бы свидетельствует об ошибке чтения файла:

RuntimeError: Error loading audio file: failed to open file spk_12_track_4.wav

Фактически это может говорить, что неверно записан путь к нему. Однако в моем цикле путь описан шаблонно для прохода по папкам, и что там некорректного, не понимаю!

  1. счетчик num_total при обходе цикла единицу не прибавляет, в результате ловлю исключение деления на ноль. Почему?

Код:

!pip install speechbrain
from speechbrain.pretrained import SpeakerRecognition
from sklearn.metrics import accuracy_score
import os
from itertools import combinations


num_true=0
num_total=0

for root, dirs, files in os.walk('/content/drive/MyDrive/speakers'):
    res = list(combinations(files, 2)) # получаем списки кортежей: [(файл 1, файл 2), (файл 1, файл 3)...(файл 3, файл 4)]

    for tuples in res:         # идем по каждому картежу в списке
        verification = SpeakerRecognition.from_hparams(source="speechbrain/spkrec-ecapa-voxceleb", savedir="pretrained_models/spkrec-ecapa-voxceleb")
        score, prediction = verification.verify_files(f'{tuples[0]}', f'{tuples[1]}')
        num_total+=1
        if prediction == tensor([True]):
            num_true+=1

    if num_total !=0:
      accuracy = num_true/num_total
      print(accuracy)
    else:
      print('На ноль делить нельзя')

Ответы (0 шт):