コード例 #1
0
 def setUp(self):
     self.signal = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefgh"
     self.audio_source = BufferAudioSource(data_buffer=self.signal,
                                           sampling_rate=11,
                                           sample_width=4,
                                           channels=1)
     self.audio_source.open()
コード例 #2
0
    def test_read_short_properties(self):

        data = ""
        sampling_rate = 8000
        sample_width = 2
        channels = 1
        a_source = BufferAudioSource(data, sampling_rate, sample_width,
                                     channels)

        self.assertEqual(a_source.sr, sampling_rate)
        self.assertEqual(a_source.sw, sample_width)
        self.assertEqual(a_source.ch, channels)
コード例 #3
0
    def test_set_readonly_short_properties_exception(self):

        data = ""
        sampling_rate = 8000
        sample_width = 2
        channels = 1
        a_source = BufferAudioSource(data, sampling_rate, sample_width,
                                     channels)

        with self.assertRaises(AttributeError):
            a_source.sr = 16000
            a_source.sw = 1
            a_source.ch = 2
コード例 #4
0
    def test_Limiter_Recorder_Overlap_Deco_rewind_and_read(self):

        # Use arbitrary valid block_size and hop_size
        block_size = 5
        hop_size = 4

        ads = ADSFactory.ads(
            data_buffer=self.signal,
            sampling_rate=16,
            sample_width=2,
            channels=1,
            max_time=0.80,
            block_size=block_size,
            hop_size=hop_size,
            record=True,
        )

        # Read all available data overlapping blocks
        ads.open()
        i = 0
        while True:
            block = ads.read()
            if block is None:
                break
            i += 1

        ads.rewind()

        # Build a BufferAudioSource
        audio_source = BufferAudioSource(self.signal, ads.sampling_rate,
                                         ads.sample_width, ads.channels)
        audio_source.open()

        # Compare all blocks read from OverlapADS to those read
        # from an audio source with a manual position setting
        for j in range(i):

            tmp = audio_source.read(block_size)

            block = ads.read()

            self.assertEqual(
                block,
                tmp,
                "Unexpected block '{}' (N={}) read from OverlapADS".format(
                    block, i),
            )
            audio_source.position = (j + 1) * hop_size

        ads.close()
        audio_source.close()
コード例 #5
0
ファイル: subsync.py プロジェクト: thomasmazon/subsync
 def _detect(asegment):
     asource = BufferAudioSource(data_buffer=asegment,
                                 sampling_rate=FRAME_RATE,
                                 sample_width=bytes_per_frame,
                                 channels=1)
     ads = ADSFactory.ads(audio_source=asource, block_dur=1./sample_rate)
     ads.open()
     tokens = tokenizer.tokenize(ads)
     length = (len(asegment)//bytes_per_frame + frames_per_window - 1)//frames_per_window
     media_bstring = np.zeros(length+1, dtype=int)
     for token in tokens:
         media_bstring[token[1]] += 1
         media_bstring[token[2]+1] -= 1
     return (np.cumsum(media_bstring)[:-1] > 0)
コード例 #6
0
 def _detect(asegment):
     asource = BufferAudioSource(data_buffer=asegment,
                                 sampling_rate=frame_rate,
                                 sample_width=bytes_per_frame,
                                 channels=1)
     ads = ADSFactory.ads(audio_source=asource, block_dur=1. / sample_rate)
     ads.open()
     tokens = tokenizer.tokenize(ads)
     length = (len(asegment) // bytes_per_frame + frames_per_window -
               1) // frames_per_window
     media_bstring = np.zeros(length + 1)
     for token in tokens:
         media_bstring[token[1]] = 1.
         media_bstring[token[2] + 1] = non_speech_label - 1.
     return np.clip(np.cumsum(media_bstring)[:-1], 0., 1.)
コード例 #7
0
    def test_Limiter_Recorder_Overlap_Deco_rewind_and_read(self):

        # Use arbitrary valid block_size and hop_size
        block_size = 1600
        hop_size = 400

        ads = ADSFactory.ads(
            audio_source=self.audio_source,
            max_time=1.50,
            block_size=block_size,
            hop_size=hop_size,
            record=True,
        )

        # Read all available data overlapping blocks
        ads.open()
        i = 0
        while True:
            block = ads.read()
            if block is None:
                break
            i += 1

        ads.rewind()

        # Read all data from file and build a BufferAudioSource
        fp = wave.open(dataset.one_to_six_arabic_16000_mono_bc_noise, "r")
        wave_data = fp.readframes(fp.getnframes())
        fp.close()
        audio_source = BufferAudioSource(wave_data, ads.sampling_rate,
                                         ads.sample_width, ads.channels)
        audio_source.open()

        # Compare all blocks read from OverlapADS to those read
        # from an audio source with a manual position setting
        for j in range(i):

            tmp = audio_source.read(block_size)

            self.assertEqual(
                ads.read(),
                tmp,
                "Unexpected block (N={0}) read from OverlapADS".format(i),
            )
            audio_source.position = (j + 1) * hop_size

        ads.close()
        audio_source.close()
    def test_Limiter_Recorder_Overlap_Deco_rewind_and_read_alias(self):

        # Use arbitrary valid block_size and hop_size
        block_size = 5
        hop_size = 4

        ads = ADSFactory.ads(db=self.signal,
                             sr=16,
                             sw=2,
                             ch=1,
                             mt=0.80,
                             bs=block_size,
                             hs=hop_size,
                             rec=True)

        # Read all available data overlapping blocks
        ads.open()
        i = 0
        while True:
            block = ads.read()
            if block is None:
                break
            i += 1

        ads.rewind()

        # Build a BufferAudioSource
        audio_source = BufferAudioSource(self.signal, ads.get_sampling_rate(),
                                         ads.get_sample_width(),
                                         ads.get_channels())
        audio_source.open()

        # Compare all blocks read from OverlapADS to those read
        # from an audio source with a manual set_position
        for j in range(i):

            tmp = audio_source.read(block_size)

            block = ads.read()

            self.assertEqual(
                block, tmp,
                "Unexpected block (N={0}) read from OverlapADS".format(i))
            audio_source.set_position((j + 1) * hop_size)

        ads.close()
        audio_source.close()
コード例 #9
0
    def test_Overlap_Deco_read(self):

        # Use arbitrary valid block_size and hop_size
        block_size = 1714
        hop_size = 313

        ads = ADSFactory.ads(
            audio_source=self.audio_source,
            block_size=block_size,
            hop_size=hop_size,
        )

        # Read all available data overlapping blocks
        ads.open()
        ads_data = []
        while True:
            block = ads.read()
            if block is None:
                break
            ads_data.append(block)
        ads.close()

        # Read all data from file and build a BufferAudioSource
        fp = wave.open(dataset.one_to_six_arabic_16000_mono_bc_noise, "r")
        wave_data = fp.readframes(fp.getnframes())
        fp.close()
        audio_source = BufferAudioSource(wave_data, ads.sampling_rate,
                                         ads.sample_width, ads.channels)
        audio_source.open()

        # Compare all blocks read from OverlapADS to those read
        # from an audio source with a manual position setting
        for i, block in enumerate(ads_data):

            tmp = audio_source.read(block_size)

            self.assertEqual(
                block,
                tmp,
                "Unexpected block (N={0}) read from OverlapADS".format(i),
            )

            audio_source.position = (i + 1) * hop_size

        audio_source.close()
    def test_Limiter_Overlap_Deco_read(self):

        block_size = 256
        hop_size = 200

        ads = ADSFactory.ads(audio_source=self.audio_source,
                             max_time=0.50,
                             block_size=block_size,
                             hop_size=hop_size)

        # Read all available data overlapping blocks
        ads.open()
        ads_data = []
        while True:
            block = ads.read()
            if block is None:
                break
            ads_data.append(block)
        ads.close()

        # Read all data from file and build a BufferAudioSource
        fp = wave.open(dataset.one_to_six_arabic_16000_mono_bc_noise, "r")
        wave_data = fp.readframes(fp.getnframes())
        fp.close()
        audio_source = BufferAudioSource(wave_data, ads.get_sampling_rate(),
                                         ads.get_sample_width(),
                                         ads.get_channels())
        audio_source.open()

        # Compare all blocks read from OverlapADS to those read
        # from an audio source with a manual set_position
        for i, block in enumerate(ads_data):
            tmp = audio_source.read(block_size)

            self.assertEqual(
                block, tmp,
                "Unexpected block (N={0}) read from OverlapADS".format(i))

            audio_source.set_position((i + 1) * hop_size)

        audio_source.close()