Esempio n. 1
0
    def testMultiStream(self):

        #  stream 0 of multistream1.mka is the same as stream 1 of multistream2.mka

        p = Pool()

        stream0 = sAudioLoader(filename=join(testdata.audio_dir, 'generated', 'multistream', 'multistream1.mka'), audioStream=0)
        stream1 = sAudioLoader(filename=join(testdata.audio_dir, 'generated', 'multistream', 'multistream2.mka'), audioStream=1)

        stream0.audio >> (p, 'stream0')
        stream0.numberChannels >> (p, 'nChannels0')
        stream0.sampleRate >> (p, 'sampleRate0')
        stream0.md5 >> (p, 'md50')
        stream0.bit_rate >> (p, 'bit_rate0')
        stream0.codec >> (p, 'codec0')

        stream1.audio >> (p, 'stream1')
        stream1.numberChannels >> (p, 'nChannels1')
        stream1.sampleRate >> (p, 'sampleRate1')
        stream1.md5 >> (p, 'md51')
        stream1.bit_rate >> (p, 'bit_rate1')
        stream1.codec >> (p, 'codec1')

        run(stream0)
        run(stream1)

        self.assertEqualVector(p['stream0'][0], p['stream1'][0])

        # An exception should be thrown if the required audioStream is out of bounds
        self.assertConfigureFails(sAudioLoader(), {'filename': join(testdata.audio_dir, 'generated', 'multistream', 'multistream1.mka'), 'audioStream': 2})
Esempio n. 2
0
    def testMultiStream(self):

        #  stream 0 of multistream1.mka is the same as stream 1 of multistream2.mka

        p = Pool()

        stream0 = sAudioLoader(filename=join(testdata.audio_dir, 'generated', 'multistream', 'multistream1.mka'), audioStream=0)
        stream1 = sAudioLoader(filename=join(testdata.audio_dir, 'generated', 'multistream', 'multistream2.mka'), audioStream=1)

        stream0.audio >> (p, 'stream0')
        stream0.numberChannels >> (p, 'nChannels0')
        stream0.sampleRate >> (p, 'sampleRate0')
        stream0.md5 >> (p, 'md50')
        stream0.bit_rate >> (p, 'bit_rate0')
        stream0.codec >> (p, 'codec0')

        stream1.audio >> (p, 'stream1')
        stream1.numberChannels >> (p, 'nChannels1')
        stream1.sampleRate >> (p, 'sampleRate1')
        stream1.md5 >> (p, 'md51')
        stream1.bit_rate >> (p, 'bit_rate1')
        stream1.codec >> (p, 'codec1')

        run(stream0)
        run(stream1)

        self.assertEqualVector(p['stream0'][0], p['stream1'][0])

        # An exception should be thrown if the required audioStream is out of bounds
        self.assertConfigureFails(sAudioLoader(), {'filename': join(testdata.audio_dir, 'generated', 'multistream', 'multistream1.mka'), 'audioStream': 2})
Esempio n. 3
0
    def pcm(self, sampleRate, filename, stereo=False):
        # as comparing sample by sample will probably fail the results, in this test
        # a filename that lasts 10s with impulses of 1 every second is loaded.
        # the sum of the impulses computed and compared with the expectedSum value.
        loader = sAudioLoader(filename=join(testdata.audio_dir, filename))
        p = Pool()

        loader.audio >> (p, 'audio')
        loader.numberChannels >> (p, 'nChannels')
        loader.sampleRate >> (p, 'sampleRate')
        loader.md5 >> (p, 'md5')
        loader.bit_rate >> (p, 'bit_rate')
        loader.codec >> (p, 'codec')

        run(loader)

        self.assertEqual(p['sampleRate'], sampleRate)
        if stereo: self.assertEqual(p['nChannels'], 2)
        else:      self.assertEqual(p['nChannels'], 1)

        audio = p['audio']

        self.assertEqual(len(audio), 10*sampleRate)

        sum = 0

        # compute sum
        for stereoSample in audio:
            sum += stereoSample[0] + stereoSample[1]

        if stereo: self.assertAlmostEqual(sum, 18, 1e-3)
        else:      self.assertAlmostEqual(sum, 9, 1e-3)
    def pcm(self, sampleRate, filename, stereo=False):
        # as comparing sample by sample will probably fail the results, in this test
        # a filename that lasts 10s with impulses of 1 every second is loaded.
        # the sum of the impulses computed and compared with the expectedSum value.
        loader = sAudioLoader(filename=join(testdata.audio_dir, filename))
        p = Pool()

        loader.audio >> (p, "audio")
        loader.numberChannels >> (p, "nChannels")
        loader.sampleRate >> (p, "sampleRate")
        loader.md5 >> (p, "md5")

        run(loader)

        self.assertEqual(p["sampleRate"], sampleRate)
        if stereo:
            self.assertEqual(p["nChannels"], 2)
        else:
            self.assertEqual(p["nChannels"], 1)

        audio = p["audio"]

        self.assertEqual(len(audio), 10 * sampleRate)

        sum = 0

        # compute sum
        for stereoSample in audio:
            sum += stereoSample[0] + stereoSample[1]

        if stereo:
            self.assertAlmostEqual(sum, 18, 1e-3)
        else:
            self.assertAlmostEqual(sum, 9, 1e-3)
    def compressed(self, sampleRate, filename, stereo=False):
        # for compressed files we will compare only those values above certain threshold.
        noisefloor = 10.0/32767.0

        loader = sAudioLoader(filename=join(testdata.audio_dir, filename))
        p = Pool()
        loader.audio >> (p, 'audio')
        loader.numberChannels >> (p, 'nChannels')
        loader.sampleRate >> (p, 'sampleRate')

        run(loader)

        if stereo: self.assertEqual(p['nChannels'], 2)
        else:      self.assertEqual(p['nChannels'], 1)
        self.assertEqual(p['sampleRate'], sampleRate)

        sum = 0

        for stereoSample in p['audio']:
            left = abs(stereoSample[0])
            right = abs(stereoSample[1])

            # don't add absolute values!
            if left > noisefloor: sum += round(stereoSample[0])
            if right > noisefloor: sum += round(stereoSample[1])

        # TODO: ffmpeg seems to decode ogg files in opposite phase, thus:
        if sum < 0:
            print 'WARNING: Essentia uses a version of FFMpeg that does reverse decoding of Ogg files...'
            sum = abs(sum)

        if stereo: self.assertEqual(sum, 18)
        else:      self.assertEqual(sum, 9)
    def compressed(self, sampleRate, filename, stereo=False):
        # for compressed files we will compare only those values above certain threshold.
        noisefloor = 10.0 / 32767.0

        loader = sAudioLoader(filename=join(testdata.audio_dir, filename))
        p = Pool()
        loader.audio >> (p, 'audio')
        loader.numberChannels >> (p, 'nChannels')
        loader.sampleRate >> (p, 'sampleRate')

        run(loader)

        if stereo: self.assertEqual(p['nChannels'], 2)
        else: self.assertEqual(p['nChannels'], 1)
        self.assertEqual(p['sampleRate'], sampleRate)

        sum = 0

        for stereoSample in p['audio']:
            left = abs(stereoSample[0])
            right = abs(stereoSample[1])

            # don't add absolute values!
            if left > noisefloor: sum += round(stereoSample[0])
            if right > noisefloor: sum += round(stereoSample[1])

        # TODO: ffmpeg seems to decode ogg files in opposite phase, thus:
        if sum < 0:
            print 'WARNING: Essentia uses a version of FFMpeg that does reverse decoding of Ogg files...'
            sum = abs(sum)

        if stereo: self.assertEqual(sum, 18)
        else: self.assertEqual(sum, 9)
Esempio n. 7
0
 def testMultiChannel(self):
     for ext in ['wav', 'aiff', 'flac']:
         filename = join(testdata.audio_dir, 'generated', 'multichannel', '4channels.'+ext)
         self.assertRaises(RuntimeError, lambda: sAudioLoader(filename=filename))
Esempio n. 8
0
 def testInvalidFile(self):
     for ext in ['wav', 'aiff', 'flac', 'mp3', 'ogg']:
         self.assertRaises(RuntimeError, lambda: sAudioLoader(filename='unknown.'+ext))
 def testMultiChannel(self):
     for ext in ["wav", "aiff", "flac"]:
         filename = join(testdata.audio_dir, "generated", "multichannel", "4channels." + ext)
         self.assertRaises(RuntimeError, lambda: sAudioLoader(filename=filename))
 def testInvalidFile(self):
     for ext in ["wav", "aiff", "flac", "mp3", "ogg"]:
         self.assertRaises(RuntimeError, lambda: sAudioLoader(filename="unknown." + ext))
 def testMultiChannel(self):
     for ext in ['wav', 'aiff', 'flac']:
         filename = join(testdata.audio_dir, 'generated', 'multichannel', '4channels.'+ext)
         self.assertRaises(RuntimeError, lambda: sAudioLoader(filename=filename))
 def testInvalidFile(self):
     for ext in ['wav', 'aiff', 'flac', 'mp3', 'ogg']:
         self.assertRaises(RuntimeError, lambda: sAudioLoader(filename='unknown.'+ext))