def load_subs(self, subs_path): with open(subs_path) as subs: self._subs = SubRip.parse(subs.read()) self._sub = None self._emit_sub_changed_new_thread()
def open(self, audio): self.pause() path = PurePath(audio) if path.suffix == ".wav": self._audio = wave.open(audio, "rb") else: self._audio = None raise ValueError("Unsupported format " + path.suffix) self._length = self._audio.getnframes() / self._audio.getframerate() / self._audio.getnchannels() * 1000 self._device.setchannels(self._audio.getnchannels()) self._device.setrate(self._audio.getframerate()) # 8bit is unsigned in wav files if self._audio.getsampwidth() == 1: self._device.setformat(alsaaudio.PCM_FORMAT_U8) # Otherwise we assume signed data, little endian elif self._audio.getsampwidth() == 2: self._device.setformat(alsaaudio.PCM_FORMAT_S16_LE) elif self._audio.getsampwidth() == 3: self._device.setformat(alsaaudio.PCM_FORMAT_S24_LE) elif self._audio.getsampwidth() == 4: self._device.setformat(alsaaudio.PCM_FORMAT_S32_LE) else: raise ValueError('Unsupported format') self._device.setperiodsize(self._CHUNK) try: with open(str(path.with_suffix(".srt"))) as subs: self._subs = SubRip.parse(subs.read()) except Exception: self._subs = None self._emit_sub_changed_new_thread()