diff --git a/libmat2/audio.py b/libmat2/audio.py
index 9b730315b2b2652adc7ab2a8dfdbfe752e3e9bfa..a26f36f0559efa47489bc935f1242c9ea45925c3 100644
--- a/libmat2/audio.py
+++ b/libmat2/audio.py
@@ -6,6 +6,17 @@ from . import abstract
 
 
 class MutagenParser(abstract.AbstractParser):
+    def __init__(self, filename):
+        super().__init__(filename)
+        try:
+            mutagen.File(self.filename)
+        except mutagen.flac.MutagenError:
+            raise ValueError
+        except mutagen.mp3.MutagenError:
+            raise ValueError
+        except mutagen.ogg.MutagenError:
+            raise ValueError
+
     def get_meta(self):
         f = mutagen.File(self.filename)
         if f.tags:
diff --git a/tests/test_corrupted_files.py b/tests/test_corrupted_files.py
new file mode 100644
index 0000000000000000000000000000000000000000..b784b0ea7d819d0cfb39523e19e9fe2ffb154919
--- /dev/null
+++ b/tests/test_corrupted_files.py
@@ -0,0 +1,88 @@
+#!/usr/bin/python3
+
+import unittest
+import shutil
+import os
+
+from libmat2 import pdf, images, audio, office, parser_factory, torrent
+
+
+class TestUnsupportedFiles(unittest.TestCase):
+    def test_pdf(self):
+        shutil.copy('./tests/test_libmat2.py', './tests/clean.py')
+        parser, mimetype = parser_factory.get_parser('./tests/data/clean.py')
+        self.assertEqual(mimetype, 'text/x-python')
+        self.assertEqual(parser, None)
+        os.remove('./tests/clean.py')
+
+
+class TestExplicitelyUnsupportedFiles(unittest.TestCase):
+    def test_pdf(self):
+        shutil.copy('./tests/test_libmat2.py', './tests/clean.txt')
+        parser, mimetype = parser_factory.get_parser('./tests/data/clean.txt')
+        self.assertEqual(mimetype, 'text/plain')
+        self.assertEqual(parser, None)
+        os.remove('./tests/clean.txt')
+
+
+class TestCorruptedFiles(unittest.TestCase):
+    def test_pdf(self):
+        shutil.copy('./tests/data/dirty.png', './tests/data/clean.png')
+        with self.assertRaises(ValueError):
+            pdf.PDFParser('./tests/data/clean.png')
+        os.remove('./tests/data/clean.png')
+
+    def test_png(self):
+        shutil.copy('./tests/data/dirty.pdf', './tests/data/clean.pdf')
+        with self.assertRaises(ValueError):
+            images.PNGParser('./tests/data/clean.pdf')
+        os.remove('./tests/data/clean.pdf')
+
+    def test_png2(self):
+        shutil.copy('./tests/test_libmat2.py', './tests/clean.png')
+        parser, mimetype = parser_factory.get_parser('./tests/clean.png')
+        self.assertIsNone(parser)
+        os.remove('./tests/clean.png')
+
+    def test_torrent(self):
+        shutil.copy('./tests/data/dirty.png', './tests/data/clean.torrent')
+        p = torrent.TorrentParser('./tests/data/clean.torrent')
+        self.assertFalse(p.remove_all())
+        expected = {'Unknown meta': 'Unable to parse torrent file "./tests/data/clean.torrent".'}
+        self.assertEqual(p.get_meta(), expected)
+
+        with open("./tests/data/clean.torrent", "a") as f:
+            f.write("trailing garbage")
+        p = torrent.TorrentParser('./tests/data/clean.torrent')
+        self.assertEqual(p.get_meta(), expected)
+        os.remove('./tests/data/clean.torrent')
+
+    def test_odg(self):
+        shutil.copy('./tests/data/dirty.png', './tests/data/clean.odg')
+        with self.assertRaises(ValueError):
+            office.LibreOfficeParser('./tests/data/clean.odg')
+        os.remove('./tests/data/clean.odg')
+
+    def test_bmp(self):
+        shutil.copy('./tests/data/dirty.png', './tests/data/clean.bmp')
+        with self.assertRaises(ValueError):
+             images.BMPParser('./tests/data/clean.bmp')
+        os.remove('./tests/data/clean.bmp')
+
+    def test_docx(self):
+        shutil.copy('./tests/data/dirty.png', './tests/data/clean.docx')
+        with self.assertRaises(ValueError):
+             office.MSOfficeParser('./tests/data/clean.docx')
+        os.remove('./tests/data/clean.docx')
+
+    def test_flac(self):
+        shutil.copy('./tests/data/dirty.png', './tests/data/clean.flac')
+        with self.assertRaises(ValueError):
+             audio.FLACParser('./tests/data/clean.flac')
+        os.remove('./tests/data/clean.flac')
+
+    def test_mp3(self):
+        shutil.copy('./tests/data/dirty.png', './tests/data/clean.mp3')
+        with self.assertRaises(ValueError):
+             audio.MP3Parser('./tests/data/clean.mp3')
+        os.remove('./tests/data/clean.mp3')
diff --git a/tests/test_libmat2.py b/tests/test_libmat2.py
index 0df333d484be91989271a2f3ab6065da9746f9ac..b34e7a46fb3973ce6fc238e0a1fca18bcc287a7f 100644
--- a/tests/test_libmat2.py
+++ b/tests/test_libmat2.py
@@ -40,72 +40,6 @@ class TestUnsupportedEmbeddedFiles(unittest.TestCase):
         self.assertFalse(p.remove_all())
         os.remove('./tests/data/clean.docx')
 
-class TestUnsupportedFiles(unittest.TestCase):
-    def test_pdf(self):
-        shutil.copy('./tests/test_libmat2.py', './tests/clean.py')
-        parser, mimetype = parser_factory.get_parser('./tests/data/clean.py')
-        self.assertEqual(mimetype, 'text/x-python')
-        self.assertEqual(parser, None)
-        os.remove('./tests/clean.py')
-
-class TestExplicitelyUnsupportedFiles(unittest.TestCase):
-    def test_pdf(self):
-        shutil.copy('./tests/test_libmat2.py', './tests/clean.txt')
-        parser, mimetype = parser_factory.get_parser('./tests/data/clean.txt')
-        self.assertEqual(mimetype, 'text/plain')
-        self.assertEqual(parser, None)
-        os.remove('./tests/clean.txt')
-
-
-class TestCorruptedFiles(unittest.TestCase):
-    def test_pdf(self):
-        shutil.copy('./tests/data/dirty.png', './tests/data/clean.png')
-        with self.assertRaises(ValueError):
-            pdf.PDFParser('./tests/data/clean.png')
-        os.remove('./tests/data/clean.png')
-
-    def test_png(self):
-        shutil.copy('./tests/data/dirty.pdf', './tests/data/clean.pdf')
-        with self.assertRaises(ValueError):
-            images.PNGParser('./tests/data/clean.pdf')
-        os.remove('./tests/data/clean.pdf')
-
-    def test_png2(self):
-        shutil.copy('./tests/test_libmat2.py', './tests/clean.png')
-        parser, mimetype = parser_factory.get_parser('./tests/clean.png')
-        self.assertIsNone(parser)
-        os.remove('./tests/clean.png')
-
-    def test_torrent(self):
-        shutil.copy('./tests/data/dirty.png', './tests/data/clean.torrent')
-        p = torrent.TorrentParser('./tests/data/clean.torrent')
-        self.assertFalse(p.remove_all())
-        expected = {'Unknown meta': 'Unable to parse torrent file "./tests/data/clean.torrent".'}
-        self.assertEqual(p.get_meta(), expected)
-
-        with open("./tests/data/clean.torrent", "a") as f:
-            f.write("trailing garbage")
-        p = torrent.TorrentParser('./tests/data/clean.torrent')
-        self.assertEqual(p.get_meta(), expected)
-        os.remove('./tests/data/clean.torrent')
-
-    def test_odg(self):
-        shutil.copy('./tests/data/dirty.png', './tests/data/clean.odg')
-        with self.assertRaises(ValueError):
-            office.LibreOfficeParser('./tests/data/clean.odg')
-        os.remove('./tests/data/clean.odg')
-
-    def test_bmp(self):
-        shutil.copy('./tests/data/dirty.png', './tests/data/clean.bmp')
-        with self.assertRaises(ValueError):
-            p = images.BMPParser('./tests/data/clean.bmp')
-        os.remove('./tests/data/clean.bmp')
-
-    def test_docx(self):
-        shutil.copy('./tests/data/dirty.png', './tests/data/clean.docx')
-        with self.assertRaises(ValueError):
-            p = office.MSOfficeParser('./tests/data/clean.docx')
-        os.remove('./tests/data/clean.docx')
 
 class TestGetMeta(unittest.TestCase):
     def test_pdf(self):