micmon/notebooks/dataset.ipynb

232 lines
56 KiB
Plaintext

{
"cells": [
{
"cell_type": "markdown",
"source": [
"This notebook scans for labelled audio samples in a directory,\n",
"extracts the spectrum of the samples and creates dataset files\n",
"with the spectrum data to train the audio detection model."
],
"metadata": {
"collapsed": false
}
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"DEBUG:matplotlib:(private) matplotlib data path: /usr/lib/python3.8/site-packages/matplotlib/mpl-data\n",
"DEBUG:matplotlib:matplotlib data path: /usr/lib/python3.8/site-packages/matplotlib/mpl-data\n",
"DEBUG:matplotlib:CONFIGDIR=/home/blacklight/.config/matplotlib\n",
"DEBUG:matplotlib:matplotlib version 3.3.2\n",
"DEBUG:matplotlib:interactive is False\n",
"DEBUG:matplotlib:platform is linux\n",
"DEBUG:matplotlib:loaded modules: ['sys', 'builtins', '_frozen_importlib', '_imp', '_warnings', '_frozen_importlib_external', '_io', 'marshal', 'posix', '_thread', '_weakref', 'time', 'zipimport', '_codecs', 'codecs', 'encodings.aliases', 'encodings', 'encodings.utf_8', '_signal', '__main__', 'encodings.latin_1', '_abc', 'abc', 'io', '_stat', 'stat', '_collections_abc', 'genericpath', 'posixpath', 'os.path', 'os', '_sitebuiltins', '_locale', '_bootlocale', 'types', 'importlib._bootstrap', 'importlib._bootstrap_external', 'warnings', 'importlib', 'importlib.machinery', 'importlib.abc', '_operator', 'operator', 'keyword', '_heapq', 'heapq', 'itertools', 'reprlib', '_collections', 'collections', '_functools', 'functools', 'contextlib', 'importlib.util', 'google', 'google.assistant', 'google.assistant.embedded', 'googlesamples', 'googlesamples.assistant', 'google.cloud', 'google.logging', 'google.iam', 'mpl_toolkits', 'ruamel', 'sphinxcontrib', 'zope', 'site', '_weakrefset', 'weakref', 'pkgutil', 'runpy', 'ipykernel._version', '__future__', 'enum', '_sre', 'sre_constants', 'sre_parse', 'sre_compile', 'copyreg', 're', '_json', 'json.scanner', 'json.decoder', 'json.encoder', 'json', 'errno', 'signal', 'threading', '_posixsubprocess', 'select', 'collections.abc', 'math', 'selectors', 'subprocess', 'IPython.core', 'IPython.core.getipython', 'IPython.core.release', 'atexit', 'copy', 'fnmatch', 'glob', 'token', 'tokenize', 'linecache', 'traceback', '_string', 'string', 'logging', 'zlib', '_compression', '_bz2', 'bz2', '_lzma', 'lzma', 'pwd', 'grp', 'shutil', '_opcode', 'opcode', 'dis', 'inspect', '_struct', 'struct', 'six', 'traitlets.utils', 'traitlets.utils.getargspec', 'ipython_genutils._version', 'ipython_genutils', 'locale', 'ipython_genutils.encoding', 'ipython_genutils.py3compat', 'traitlets.utils.importstring', 'traitlets.utils.sentinel', 'traitlets.utils.bunch', 'traitlets.traitlets', 'traitlets._version', 'traitlets', 'decorator', 'gettext', 'argparse', '_ast', 'ast', '_bisect', 'bisect', '_sha512', '_random', 'random', 'ipython_genutils.path', 'traitlets.config.loader', 'textwrap', 'ipython_genutils.text', 'traitlets.config.configurable', 'ipython_genutils.importstring', 'traitlets.config.application', 'traitlets.config', 'pprint', 'platform', 'sysconfig', 'urllib', 'urllib.parse', '_sysconfigdata__linux_x86_64-linux-gnu', 'pydoc', 'bdb', 'IPython.utils', 'IPython.utils.ipstruct', 'IPython.utils.coloransi', 'pygments', 'IPython.utils.colorable', 'IPython.utils.PyColorize', 'IPython.utils.encoding', 'IPython.utils.py3compat', 'IPython.core.excolors', 'IPython.testing', 'IPython.testing.skipdoctest', 'cmd', 'codeop', 'code', 'pdb', 'IPython.core.debugger', 'IPython.core.display_trap', 'pexpect.exceptions', 'pexpect.utils', 'pexpect.expect', 'termios', 'tty', 'pty', 'fcntl', 'resource', 'ptyprocess.util', 'ptyprocess.ptyprocess', 'ptyprocess', 'pexpect.spawnbase', 'pexpect.pty_spawn', 'pexpect.run', 'pexpect', 'shlex', 'IPython.utils._process_common', 'IPython.utils._process_posix', 'IPython.utils.process', 'IPython.utils.decorators', 'IPython.utils.path', 'IPython.utils.data', 'IPython.utils.terminal', 'IPython.core.ultratb', 'IPython.utils._sysinfo', 'IPython.utils.sysinfo', 'IPython.core.crashhandler', 'tempfile', 'IPython.utils.importstring', 'IPython.paths', 'IPython.core.profiledir', 'IPython.core.application', 'IPython.terminal', '_hashlib', '_blake2', '_sha3', 'hashlib', 'IPython.core.compilerop', 'IPython.core.error', 'ntpath', 'pathlib', 'IPython.utils.text', 'IPython.core.magic_arguments', 'getopt', 'typing.io', 'typing.re', 'typing', 'binascii', 'mimetypes', 'IPython.core.display', 'IPython.core.page', 'getpass', 'IPython.lib.security', 'IPython.lib', '_datetime', 'datetime', 'IPython.lib.pretty', 'IPython.utils.openpy', 'IPython.utils.dir2', 'IPython.utils.wildcard', 'pygments.lexers._mapping', 'pygments.modeline', 'pygments.plugin', 'pygments.util', 'pygments.lexers', 'pygments.filter', 'pygments.token', 'pygments.filters', 'pygments.regexopt', 'pygments.lexer', 'pygments.unistring', 'pygments.lexers.python', 'pygments.formatters._mapping', 'pygments.formatters', 'pygments.styles', 'pygments.formatter', 'pygments.formatters.html', 'IPython.core.oinspect', 'IPython.core.inputtransformer2', 'IPython.core.magic', '_compat_pickle', '_pickle', 'pickle', 'pickleshare', 'IPython.core.autocall', 'IPython.core.macro', 'IPython.core.splitinput', 'IPython.core.prefilter', 'IPython.core.alias', 'IPython.core.builtin_trap', 'backcall.backcall', 'backcall', 'IPython.core.events', 'IPython.core.displayhook', 'IPython.core.displaypub', 'IPython.core.extensions', 'IPython.utils.sentinel', 'IPython.core.formatters', '_sqlite3', 'sqlite3.dbapi2', 'sqlite3', 'IPython.core.history', 'IPython.core.logger', 'IPython.core.payload', 'IPython.core.usage', 'html.entities', 'html', 'IPython.lib.display', 'IPython.display', 'IPython.utils.capture', 'IPython.utils.io', 'IPython.core.hooks', 'IPython.utils.strdispatch', 'IPython.utils.syspathcontext', 'IPython.utils.tempdir', 'IPython.utils.contexts', 'IPython.core.async_helpers', 'IPython.core.interactiveshell', 'concurrent', 'concurrent.futures._base', 'concurrent.futures', '_socket', 'socket', '_ssl', 'base64', 'ssl', 'asyncio.constants', 'asyncio.format_helpers', 'asyncio.base_futures', 'asyncio.log', 'asyncio.coroutines', '_contextvars', 'contextvars', 'asyncio.exceptions', 'asyncio.base_tasks', '_asyncio', 'asyncio.events', 'asyncio.futures', 'asyncio.protocols', 'asyncio.transports', 'asyncio.sslproto', 'asyncio.locks', 'asyncio.tasks', 'asyncio.staggered', 'asyncio.trsock', 'asyncio.base_events', 'asyncio.runners', 'asyncio.queues', 'asyncio.streams', 'asyncio.subprocess', 'asyncio.base_subprocess', 'asyncio.selector_events', 'asyncio.unix_events', 'asyncio', 'prompt_toolkit.application.current', 'prompt_toolkit.eventloop.utils', 'prompt_toolkit.eventloop.async_generator', 'wcwidth.table_wide', 'wcwidth.table_zero', 'wcwidth.unicode_versions', 'wcwidth.wcwidth', 'wcwidth', 'prompt_toolkit.utils', 'prompt_toolkit.eventloop.inputhook', 'prompt_toolkit.eventloop', 'prompt_toolkit.application.run_in_terminal', 'prompt_toolkit.selection', 'prompt_toolkit.clipboard.base', 'prompt_toolkit.clipboard.in_memory', 'prompt_toolkit.clipboard', 'prompt_toolkit.cache', 'prompt_toolkit.enums', 'prompt_toolkit.filters.base', 'prompt_toolkit.filters.app', 'prompt_toolkit.filters.cli', 'prompt_toolkit.filters.utils', 'prompt_toolkit.filters', 'prompt_toolkit.document', 'prompt_toolkit.auto_suggest', 'prompt_toolkit.data_structures', 'prompt_toolkit.styles.base', 'prompt_toolkit.styles.named_colors', 'prompt_toolkit.styles.style', 'prompt_toolkit.styles.defaults', 'prompt_toolkit.styles.pygments', 'colorsys', 'prompt_toolkit.styles.style_transformation', 'prompt_toolkit.styles', 'prompt_toolkit.output.color_depth', 'prompt_toolkit.output.base', 'prompt_toolkit.patch_stdout', 'prompt_toolkit.output.defaults', 'prompt_toolkit.output', 'array', 'prompt_toolkit.output.vt100', 'prompt_toolkit.mouse_events', 'prompt_toolkit.formatted_text.base', 'prompt_toolkit.formatted_text.ansi', 'xml', 'xml.dom.domreg', 'xml.dom', 'xml.dom.minicompat', 'xml.dom.NodeFilter', 'xml.dom.xmlbuilder', 'xml.dom.minidom', 'prompt_toolkit.formatted_text.html', 'prompt_toolkit.formatted_text.pygments', 'prompt_toolkit.formatted_text.utils', 'prompt_toolkit.formatted_text', 'prompt_toolkit.completion.base', 'prompt_toolkit.completion.filesystem', 'prompt_toolkit.completion.word_completer', 'prompt_toolkit.completion.fuzzy_completer', 'prompt_toolkit.completion.nested', 'prompt_toolkit.completion', 'prompt_toolkit.history', 'prompt_toolkit.keys', 'prompt_toolkit.key_binding.key_bindings', 'prompt_toolkit.key_binding.key_processor', 'prompt_toolkit.key_binding', 'prompt_toolkit.key_binding.vi_state', 'prompt_toolkit.search', 'prompt_toolkit.validation', 'prompt_toolkit.buffer', 'prompt_toolkit.input.base', 'prompt_toolkit.input.defaults', 'prompt_toolkit.input', 'prompt_toolkit.input.typeahead', 'prompt_toolkit.key_binding.bindings', 'prompt_toolkit.key_binding.bindings.scroll', 'prompt_toolkit.key_binding.bindings.page_navigation', 'prompt_toolkit.lexers.base', 'prompt_toolkit.lexers.pygments', 'prompt_toolkit.lexers', 'prompt_toolkit.layout.utils', 'prompt_toolkit.layout.processors', 'prompt_toolkit.layout.controls', 'prompt_toolkit.layout.dimension', 'prompt_toolkit.layout.margins', 'prompt_toolkit.layout.mouse_handlers', 'prompt_toolkit.layout.screen', 'prompt_toolkit.layout.containers', 'prompt_toolkit.layout.layout', 'prompt_toolkit.layout.menus', 'prompt_toolkit.layout', 'prompt_toolkit.key_binding.bindings.completion', 'prompt_toolkit.key_binding.bindings.named_commands', 'prompt_toolkit.key_binding.bindings.basic', 'prompt_toolkit.key_binding.bindings.cpr', 'prompt_toolkit.key_binding.bindings.emacs', 'prompt_toolkit.key_binding.bindings.mouse', 'prompt_toolkit.input.ansi_escape_sequences', 'prompt_toolkit.input.vt100_parser', 'prompt_toolkit.key_binding.digraphs', 'prompt_toolkit.key_binding.bindings.vi', 'prompt_toolkit.key_binding.defaults', 'prompt_toolkit.key_binding.emacs_state', 'prompt_toolkit.layout.dummy', 'prompt_toolkit.renderer', 'prompt_toolkit.application.application', 'prompt_toolkit.application.dummy', 'prompt_toolkit.application', 'prompt_toolkit.key_binding.bindings.focus', 'prompt_toolkit.widgets.toolbars', 'prompt_toolkit.widgets.base', 'prompt_toolkit.widgets.dialogs', 'prompt_toolkit.widgets.menus', 'prompt_toolkit.widgets', 'prompt_toolkit.shortcuts.dialogs', 'prompt_toolkit.shortcuts.progress_bar.formatters', 'prompt_toolkit.shortcuts.progress_bar.base', 'prompt_toolkit.shortcuts.progress_bar', 'prompt_toolkit.key_binding.bindings.auto_suggest', 'prompt_toolkit.key_binding.bindings.open_in_editor', 'prompt_toolkit.shortcuts.prompt', 'prompt_toolkit.shortcuts.utils', 'prompt_toolkit.shortcuts', 'prompt_toolkit', 'pygments.style', 'unicodedata', 'IPython.core.latex_symbols', 'IPython.utils.generics', 'parso._compatibility', 'parso.utils', 'parso.tree', 'parso.python', 'parso.python.token', 'parso.python.tokenize', 'parso.pgen2.grammar_parser', 'parso.pgen2.generator', 'parso.pgen2', 'parso.parser', 'difflib', 'parso.python.prefix', 'parso.python.tree', 'parso.python.parser', 'parso.python.diff', 'gc', 'parso.file_io', 'parso.cache', 'parso.normalizer', 'parso.python.errors', 'parso.python.pep8', 'parso.grammar', 'parso', 'jedi.file_io', '_queue', 'queue', 'jedi._compatibility', 'jedi.parser_utils', 'colorama.ansi', '_ctypes', 'ctypes._endian', 'ctypes', 'colorama.win32', 'colorama.winterm', 'colorama.ansitowin32', 'colorama.initialise', 'colorama', 'jedi.debug', 'jedi.settings', 'jedi.cache', 'jedi.inference.cache', 'jedi.inference.helpers', 'jedi.inference.utils', 'jedi.inference.base_value', 'jedi.common', 'jedi.inference.sys_path', 'jedi.inference.recursion', 'jedi.inference.flow_analysis', 'jedi.inference.lazy_value', 'jedi.inference.docstrings', 'jedi.plugins', 'jedi.inference.names', 'jedi.inference.filters', 'jedi.inference.compiled.getattr_static', 'jedi.inference.compiled.access', 'jedi.inference.signature', 'jedi.inference.context', 'jedi.inference.compiled.value', 'jedi.inference.compiled', 'jedi.inference.analysis', 'jedi.inference.gradual', 'jedi.inference.value.module', 'jedi.inference.value.dynamic_arrays', 'jedi.inference.value.iterable', 'jedi.inference.arguments', 'jedi.inference.parser_cache', 'jedi.inference.gradual.generics', 'jedi.inference.value.function', 'jedi.inference.value.klass', 'jedi.inference.value.instance', 'jedi.inference.value', 'jedi.inference.gradual.base', 'jedi.inference.gradual.type_var', 'jedi.inference.gradual.typing', 'jedi.inference.gradual.stub_value', 'jedi.inference.gradual.typeshed', 'jedi.inference.imports', 'jedi.inference.param', 'jedi.inference.gradual.annotation', 'jedi.inference.value.decorator', 'jedi.inference.syntax_tree', 'jedi.inference', 'jedi.inference.gradual.conversion', 'jedi.inference.compiled.mixed', 'pydoc_data', 'pydoc_data.topics', 'jedi.api.keywords', 'jedi.api.completion_cache', 'jedi.api.helpers', 'jedi.api.classes', 'jedi.api.interpreter', 'jedi.api.strings', 'jedi.api.file_name', 'jedi.api.completion', 'filecmp', 'jedi.inference.compiled.subprocess.functions', 'jedi.api.exceptions', 'jedi.inference.compiled.subprocess', 'jedi.api.environment', 'jedi.inference.references', 'jedi.api.project', 'jedi.api.errors', 'jedi.api.refactoring', 'jedi.api.refactoring.extract', 'jedi.inference.gradual.utils', 'jedi.api', 'jedi.plugins.stdlib', 'jedi.plugins.flask', 'jedi.plugins.pytest', 'jedi.plugins.django', 'jedi.plugins.registry', 'jedi', 'IPython.core.completer', 'IPython.terminal.ptutils', 'IPython.terminal.shortcuts', 'IPython.terminal.debugger', 'IPython.lib.clipboard', 'IPython.terminal.magics', 'IPython.terminal.pt_inputhooks', 'IPython.terminal.prompts', 'IPython.terminal.interactiveshell', 'IPython.core.magics.auto', 'IPython.core.magics.basic', 'email', 'http', 'email.errors', 'email.quoprimime', 'email.base64mime', 'quopri', 'email.encoders', 'email.charset', 'email.header', 'calendar', 'email._parseaddr', 'email.utils', 'email._policybase', 'email.feedparser', 'email.parser', 'uu', 'email._encoded_words', 'email.iterators', 'email.message', 'http.client', 'urllib.response', 'urllib.error', 'urllib.request', 'IPython.core.magics.code', 'IPython.core.magics.config', 'IPython.core.magics.display', 'timeit', '_lsprof', 'profile', 'cProfile', 'pstats', 'IPython.utils.module_paths', 'IPython.utils.timing', 'IPython.core.magics.execution', 'IPython.core.magics.extension', 'IPython.core.magics.history', 'IPython.core.magics.logging', 'IPython.core.magics.namespace', 'IPython.core.magics.osm', 'IPython.core.magics.packaging', 'IPython.core.pylabtools', 'IPython.core.magics.pylab', 'IPython.lib.backgroundjobs', 'IPython.core.magics.script', 'IPython.core.magics', 'IPython.core.shellapp', 'IPython.extensions', 'IPython.extensions.storemagic', 'IPython.terminal.ipapp', 'IPython.terminal.embed', 'IPython.utils.frame', 'IPython', 'jupyter_client._version', 'zmq.backend.select', 'cython_runtime', 'zmq.backend.cython.constants', '_cython_0_29_17', 'zmq.backend.cython.error', 'zmq.error', 'zmq.backend.cython.message', 'zmq.backend.cython.context', 'zmq.backend.cython.socket', 'zmq.backend.cython.utils', 'zmq.backend.cython._poll', 'zmq.backend.cython._version', 'zmq.backend.cython._device', 'zmq.backend.cython._proxy_steerable', 'zmq.backend.cython', 'zmq.backend', 'zmq.utils', 'zmq.utils.constant_names', 'zmq.sugar.constants', 'zmq.sugar.attrsettr', 'zmq.sugar.poll', 'zmq.utils.strtypes', 'numbers', '_pydecimal', 'decimal', 'simplejson.errors', 'simplejson.raw_json', 'simplejson.compat', 'simplejson._speedups', 'simplejson.scanner', 'simplejson.decoder', 'simplejson.encoder', 'simplejson', 'zmq.utils.jsonapi', 'zmq.sugar.socket', 'zmq.sugar.context', 'zmq.sugar.frame', 'zmq.sugar.tracker', 'zmq.sugar.version', 'zmq.sugar.stopwatch', 'zmq.sugar', 'zmq', 'jupyter_client.localinterfaces', 'jupyter_core.version', 'jupyter_core', 'distutils', 'distutils.errors', 'distutils.dep_util', 'distutils.debug', 'distutils.log', 'distutils.spawn', 'distutils.util', 'jupyter_core.paths', 'jupyter_client.connect', 'traitlets.log', 'jupyter_client.launcher', 'jupyter_client.channelsabc', 'jupyter_client.channels', 'jupyter_client.clientabc', 'jupyter_client.client', 'jupyter_client.kernelspec', 'jupyter_client.managerabc', 'jupyter_client.manager', 'jupyter_client.blocking.channels', 'jupyter_client.blocking.client', 'jupyter_client.blocking', 'zmq._future', 'zmq.asyncio', 'jupyter_client.asynchronous.channels', 'jupyter_client.asynchronous.client', 'jupyter_client.asynchronous', '_uuid', 'uuid', 'jupyter_client.multikernelmanager', 'jupyter_client', 'ipykernel.connect', 'ipykernel', 'tornado', 'logging.handlers', 'tornado.speedups', 'tornado.util', 'tornado.escape', '_curses', 'curses', 'tornado.log', 'tornado.concurrent', 'tornado.ioloop', 'tornado.platform', 'tornado.gen', 'tornado.platform.asyncio', 'zmq.eventloop.ioloop', 'zmq.eventloop', 'tornado.stack_context', 'zmq.eventloop.zmqstream', 'imp', 'hmac', 'dateutil._version', 'dateutil', 'dateutil._common', 'dateutil.relativedelta', 'six.moves', 'dateutil.tz._common', 'dateutil.tz._factories', 'dateutil.tz.tz', 'dateutil.tz', 'dateutil.parser._parser', 'dateutil.parser.isoparser', 'dateutil.parser', '_strptime', 'jupyter_client.jsonutil', 'jupyter_client.adapter', 'jupyter_client.session', 'ipykernel.iostream', 'ipykernel.heartbeat', 'IPython.utils.tokenutil', 'tornado.locks', 'tornado.queues', 'ipykernel.jsonutil', 'ipykernel.kernelbase', 'ipykernel.comm.comm', 'ipykernel.comm.manager', 'ipykernel.comm', 'IPython.core.payloadpage', 'ipykernel.displayhook', 'ipykernel.zmqshell', 'distutils.version', 'ipykernel.eventloops', 'ipykernel.ipkernel', 'ipykernel.parentpoller', 'ipykernel.kernelapp', 'netifaces', 'faulthandler', 'ipykernel.codeutil', 'ipykernel.pickleutil', 'ipykernel.serialize', 'ipykernel.datapub', 'IPython.core.completerlib', 'storemagic', 'micmon', 'micmon.audio', 'micmon.audio.directory', 'micmon.audio.segment', 'numpy._globals', 'numpy.__config__', 'numpy.version', 'numpy._distributor_init', 'numpy.core._multiarray_umath', 'numpy.compat._inspect', 'numpy.compat.py3k', 'numpy.compat', 'numpy.core.overrides', 'numpy.core.multiarray', 'numpy.core.umath', 'numpy.core._string_helpers', 'numpy.core._dtype', 'numpy.core._type_aliases', 'numpy.core.numerictypes', 'numpy.core._asarray', 'numpy.core._exceptions', 'numpy.core._methods', 'numpy.core.fromnumeric', 'numpy.core.shape_base', 'numpy.core._ufunc_config', 'numpy.core.arrayprint', 'numpy.core.numeric', 'numpy.core.defchararray', 'numpy.core.records', 'numpy.core.memmap', 'numpy.core.function_base', 'numpy.core.machar', 'numpy.core.getlimits', 'numpy.core.einsumfunc', 'numpy.core._multiarray_tests', 'numpy.core._add_newdocs', 'numpy.core._dtype_ctypes', 'numpy.core._internal', 'numpy._pytesttester', 'numpy.core', 'numpy.lib.mixins', 'numpy.lib.ufunclike', 'numpy.lib.type_check', 'numpy.lib.scimath', 'numpy.lib.twodim_base', 'numpy.linalg.lapack_lite', 'numpy.linalg._umath_linalg', 'numpy.linalg.linalg', 'numpy.linalg', 'numpy.matrixlib.defmatrix', 'numpy.matrixlib', 'numpy.lib.histograms', 'numpy.lib.function_base', 'numpy.lib.stride_tricks', 'numpy.lib.index_tricks', 'numpy.lib.nanfunctions', 'numpy.lib.shape_base', 'numpy.lib.polynomial', 'numpy.lib.utils', 'numpy.lib.arraysetops', 'numpy.lib.format', 'numpy.lib._datasource', 'numpy.lib._iotools', 'numpy.lib.npyio', 'numpy.lib.financial', 'numpy.lib.arrayterator', 'numpy.lib.arraypad', 'numpy.lib._version', 'numpy.lib', 'numpy.fft._pocketfft_internal', 'numpy.fft._pocketfft', 'numpy.fft.helper', 'numpy.fft', 'numpy.polynomial.polyutils', 'numpy.polynomial._polybase', 'numpy.polynomial.polynomial', 'numpy.polynomial.chebyshev', 'numpy.polynomial.legendre', 'numpy.polynomial.hermite', 'numpy.polynomial.hermite_e', 'numpy.polynomial.laguerre', 'numpy.polynomial', '_cython_0_29_21', 'numpy.random._common', 'secrets', 'numpy.random.bit_generator', 'numpy.random._bounded_integers', 'numpy.random._mt19937', 'numpy.random.mtrand', 'numpy.random._philox', 'numpy.random._pcg64', 'numpy.random._sfc64', 'numpy.random._generator', 'numpy.random._pickle', 'numpy.random', 'numpy.ctypeslib', 'numpy.ma.core', 'numpy.ma.extras', 'numpy.ma', 'numpy', 'matplotlib', 'gzip', 'matplotlib.cbook.deprecation', 'matplotlib.cbook', 'matplotlib._animation_data', 'matplotlib.animation', 'pyparsing', 'matplotlib.fontconfig_pattern', 'matplotlib.docstring', 'matplotlib._color_data', 'matplotlib.colors', 'cycler', 'matplotlib.rcsetup', 'matplotlib._version', 'matplotlib.ft2font', 'kiwisolver']\n",
"DEBUG:matplotlib:CACHEDIR=/home/blacklight/.cache/matplotlib\n",
"DEBUG:matplotlib.font_manager:Using fontManager instance from /home/blacklight/.cache/matplotlib/fontlist-v330.json\n",
"DEBUG:matplotlib.pyplot:Loaded backend module://ipykernel.pylab.backend_inline version unknown.\n",
"DEBUG:matplotlib.pyplot:Loaded backend module://ipykernel.pylab.backend_inline version unknown.\n"
]
}
],
"source": [
"import os\n",
"\n",
"from micmon.audio import AudioDirectory, AudioPlayer, AudioFile\n",
"from micmon.dataset import DatasetWriter\n",
"\n",
"basedir = os.path.expanduser(os.path.join('~', 'projects', 'baby-monitor'))\n",
"audio_dir = os.path.join(basedir, 'data', 'audio')\n",
"datasets_dir = os.path.join(basedir, 'data', 'datasets')\n",
"audio_dirs = AudioDirectory.scan(audio_dir)\n",
"cutoff_frequencies = [250, 7500]"
]
},
{
"cell_type": "markdown",
"source": [
"Play some audio samples"
],
"metadata": {
"collapsed": false
}
},
{
"cell_type": "code",
"execution_count": 3,
"outputs": [],
"source": [
"for audio in audio_dirs:\n",
" with AudioFile(audio, start='19:40', duration=10) as reader, \\\n",
" AudioPlayer() as player:\n",
" for sample in reader:\n",
" player.play(sample)"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "markdown",
"source": [
"Plot the spectrum of the audio samples in the first 10 seconds of each audio file."
],
"metadata": {
"collapsed": false
}
},
{
"cell_type": "code",
"execution_count": 2,
"outputs": [
{
"data": {
"text/plain": "<Figure size 432x288 with 1 Axes>",
"image/png": "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\n"
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"text/plain": "<Figure size 432x288 with 1 Axes>",
"image/png": "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\n"
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"text/plain": "<Figure size 432x288 with 1 Axes>",
"image/png": "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\n"
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"text/plain": "<Figure size 432x288 with 1 Axes>",
"image/png": "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\n"
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"text/plain": "<Figure size 432x288 with 1 Axes>",
"image/png": "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\n"
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"text/plain": "<Figure size 432x288 with 1 Axes>",
"image/png": "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\n"
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"for audio in audio_dirs:\n",
" with AudioFile(audio, start=0, duration=4) as reader:\n",
" for sample in reader:\n",
" sample.plot_spectrum(low_freq=cutoff_frequencies[0],\n",
" high_freq=cutoff_frequencies[1])"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "markdown",
"source": [
"Save the spectrum information and labels of the samples to a\n",
"different compressed file for each audio file."
],
"metadata": {
"collapsed": false
}
},
{
"cell_type": "code",
"execution_count": 2,
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Processing audio sample /home/blacklight/projects/baby-monitor/data/audio/2020-10-25_16-36-00\n",
"Processing audio sample /home/blacklight/projects/baby-monitor/data/audio/2020-10-24_19-53-00\n",
"Processing audio sample /home/blacklight/projects/baby-monitor/data/audio/2020-10-24_17-25-00\n"
]
}
],
"source": [
"for audio in audio_dirs:\n",
" dataset_file = os.path.join(datasets_dir, os.path.basename(audio.path) + '.npz')\n",
" print(f'Processing audio sample {audio.path}')\n",
"\n",
" with AudioFile(audio) as reader, \\\n",
" DatasetWriter(dataset_file,\n",
" low_freq=cutoff_frequencies[0],\n",
" high_freq=cutoff_frequencies[1]) as writer:\n",
" for sample in reader:\n",
" writer += sample"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.6"
}
},
"nbformat": 4,
"nbformat_minor": 0
}