| 1839 | return msg + ")" |
| 1840 | |
| 1841 | def _read_audio_segment(self, path, seg_len=None): |
| 1842 | with soundfile.SoundFile(path) as f: |
| 1843 | if seg_len is None or f.frames == seg_len: |
| 1844 | audio = f.read(dtype=np.float32, always_2d=True) |
| 1845 | elif f.frames < seg_len: |
| 1846 | offset = np.random.randint(0, seg_len - f.frames) |
| 1847 | # audio: (Time, Nmic) |
| 1848 | audio = f.read(dtype=np.float32, always_2d=True) |
| 1849 | # Repeat audio |
| 1850 | audio = np.pad( |
| 1851 | audio, |
| 1852 | [(offset, seg_len - f.frames - offset), (0, 0)], |
| 1853 | mode="wrap", |
| 1854 | ) |
| 1855 | else: |
| 1856 | offset = np.random.randint(0, f.frames - seg_len) |
| 1857 | f.seek(offset) |
| 1858 | # audio: (Time, Nmic) |
| 1859 | audio = f.read(seg_len, dtype=np.float32, always_2d=True) |
| 1860 | if len(audio) != seg_len: |
| 1861 | raise RuntimeError(f"Something wrong: {path}") |
| 1862 | return audio[:, 0] |
| 1863 | |
| 1864 | @typechecked |
| 1865 | def _speech_process( |