fix soundfile.info error

pull/3900/head
drryanhuang 9 months ago
parent 062d996313
commit 1c02ee4dc5

@ -20,6 +20,7 @@ from typing import Tuple
from typing import Type from typing import Type
from typing import Union from typing import Union
import ffmpeg
import librosa import librosa
import numpy as np import numpy as np
import paddle import paddle
@ -149,6 +150,30 @@ class Info:
return self.num_frames / self.sample_rate return self.num_frames / self.sample_rate
def info_ffmpeg(audio_path: str):
"""
Parameters
----------
audio_path : str
Path to audio file.
"""
probe = ffmpeg.probe(audio_path)
audio_streams = [
stream for stream in probe['streams'] if stream['codec_type'] == 'audio'
]
if not audio_streams:
raise ValueError("No audio stream found in the file.")
audio_stream = audio_streams[0]
sample_rate = int(audio_stream['sample_rate'])
duration = float(audio_stream['duration'])
num_frames = int(duration * sample_rate)
info = Info(sample_rate=sample_rate, num_frames=num_frames)
return info
def info(audio_path: str): def info(audio_path: str):
""" """
@ -157,8 +182,11 @@ def info(audio_path: str):
audio_path : str audio_path : str
Path to audio file. Path to audio file.
""" """
info = soundfile.info(str(audio_path)) try:
info = Info(sample_rate=info.samplerate, num_frames=info.frames) info = soundfile.info(str(audio_path))
info = Info(sample_rate=info.samplerate, num_frames=info.frames)
except:
info = info_ffmpeg(str(audio_path))
return info return info

@ -1,3 +1,4 @@
ffmpeg-python
flatten_dict flatten_dict
gradio gradio
IPython IPython

Loading…
Cancel
Save