Разная частота дискретизации SR для одного и того же wav-файла между librosa и tensorflow

#python #tensorflow #nlp #wav #librosa

Вопрос:

У меня есть один wav-файл, который я пересчитал до 16.000 кГц с помощью Audacity. Теперь я пытаюсь загрузить файл с помощью python 2 различными способами.

 import tensorflow as tf
import librosa

f = "path/to/wav/file/xxxx.wav"

raw = tf.io.read_file(f)
audio, sr = tf.audio.decode_wav(raw, desired_channels=1)
print("Sample Rate TF: ",sr.numpy())

y, sr2 = librosa.load(f)
print("Sample Rate librosa: ",sr2)


#Sample Rate TF:  16000
#Sample Ratelibrosa:  22050
 

Почему частота дискретизации так сильно отличается для одного и того же файла?
Какой библиотеке я могу доверять больше?

Ответ №1:

Это не вопрос «доверия». Обе функции делают то, что они должны делать. Версия TF, по-видимому, не выполняет повторную выборку звука. Librosa по умолчанию изменяет частоту на 22 050 Гц (по какой-либо причине). Пожалуйста, прочтите документы. Вы можете избежать этого, позвонив по телефону

 y, sr2 = librosa.load(f, sr=None)
 

В общем случае sr аргумент обеспечивает частоту дискретизации для повторной выборки; передавая None , вы предотвращаете повторную выборку.

Комментарии:

1. О, это был отличный намек. Спасибо!