Как узнать сумму длительности аудиозаписей в файлах?

Есть папка со множеством вложенных папок с небольшими кусочками аудио. Нужно узнать суммарную длительность.

Можно ли с помощью кода, например, пройти по всем файлам и сложить их длительность? Какие библиотеки/функции использовать?


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

Автор решения: MaxU

Непроверенный пример:

from pathlib import Path
from librosa import get_duration  #  pip install librosa

wav_dir = Path("/path/to/wave_files")

res = sum(get_duration(filename=str(f)) for f in wav_dir.rglob("*.wav"))
print(res)
→ Ссылка
Автор решения: Опан

Эта утилита может не соответствовать меткам, так как написана на языке JavaScript. К тому же, все аудиофайлы дожны быть в одной папке. Создайте в этой же папке новый текстовый документ и назовите его, скажем, utilita.html и впишите туда такой код:

<html>
<body bgcolor=#ccc><center><h3>Утилита для определения сумарной длительности звучания</h3>
<div id=vybor>
    <input type="file" multiple="multiple" id="myfile" onchange="mysum(this.files)">
</div><br>
<div id = resultat></div>
<script>
function mysum(e){
    resultat.innerHTML = "подождите ...";
    let  b = 0;
    for(var i = 0; i < e.length; i ++){
        let a = new Audio(e[i].name);
        a.onloadedMetaData = (function(){
            b += a.duration; 
            resultat.innerHTML = "Сумарная длительность звучания всех выбранных МП3-файлов: <b>" + Math.round(b / 60) + "</b> минут";
        };
    }
}
vybor.innerHTML = vybor.innerHTML;
</script>
<center></body>
</html>

После сохранения перетащите мышью этот файл в новое окно браузера. На странице появится кнопка "выберите файлы". Выделите все аудиофайлы в этой папке и нажмите "выбрать". Результат увидите. Если вдруг вместо числа минут выскочит NaN, то попробуйте ещё раз. Даже если выберите не все аудиофайлы из папки, то подсчитается сумарная длительность звучания только выбранных файлов.

→ Ссылка