def get_duration( path: Pathlike, ) -> float: """ Read a audio file, it supports pipeline style wave path and real waveform. :param path: Path to an audio file or a Kaldi-style pipe. :return: float duration of the recording, in seconds. """ path = str(path) if path.strip().endswith("|"): if not is_module_available("kaldi_native_io"): raise ValueError( "To read Kaldi's data dir where wav.scp has 'pipe' inputs, " "please 'pip install kaldi_native_io' first." ) import kaldi_native_io wave = kaldi_native_io.read_wave(path) assert wave.data.shape[0] == 1, f"Expect 1 channel. Given {wave.data.shape[0]}" return wave.duration try: # Try to parse the file using pysoundfile first. import soundfile info = soundfile.info(path) except: # Try to parse the file using audioread as a fallback. info = audioread_info(path) return info.duration
def get_duration(path: Pathlike, ) -> float: """ Read a audio file, it supports pipeline style wave path and real waveform. :param path: Path to an audio file or a Kaldi-style pipe. :return: float duration of the recording, in seconds. """ path = str(path) if path.strip().endswith("|"): if not is_module_available("kaldiio"): raise ValueError( "To read Kaldi's data dir where wav.scp has 'pipe' inputs, " "please 'pip install kaldiio' first.") from kaldiio import load_mat # Note: kaldiio.load_mat returns # (sampling_rate: int, samples: 1-D np.array[int]) sampling_rate, samples = load_mat(path) assert len(samples.shape) == 1 duration = samples.shape[0] / sampling_rate return duration try: # Try to parse the file using pysoundfile first. import soundfile info = soundfile.info(path) except: # Try to parse the file using audioread as a fallback. info = audioread_info(path) return info.duration
def get_duration(path: Pathlike, ) -> float: """ Read a audio file, it supports pipeline style wave path and real waveform. :param path: Path to an audio file supported by libsoundfile (pysoundfile). :return: duration of wav it is float. """ try: # Try to parse the file using pysoundfile first. import soundfile info = soundfile.info(str(path)) except: # Try to parse the file using audioread as a fallback. info = audioread_info(str(path)) return info.duration