Remove system path modifications
To run a script during development, instead ./setup.sh followed by precise-<script_name> should be used This ensures all the proper paths are already setup (such as for PreciseRunner)pull/1/head
parent
d622eef3ec
commit
cc32959e29
|
|
@ -1,3 +1,4 @@
|
||||||
|
# Copyright (c) 2017 Mycroft AI Inc.
|
||||||
from typing import *
|
from typing import *
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
# Copyright (c) 2017 Mycroft AI Inc.
|
||||||
from os.path import isfile
|
from os.path import isfile
|
||||||
from typing import *
|
from typing import *
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
# Python 3
|
|
||||||
# Copyright (c) 2017 Mycroft AI Inc.
|
# Copyright (c) 2017 Mycroft AI Inc.
|
||||||
from abc import abstractmethod, ABCMeta
|
from abc import abstractmethod, ABCMeta
|
||||||
from importlib import import_module
|
from importlib import import_module
|
||||||
|
|
@ -8,9 +7,9 @@ from typing import BinaryIO
|
||||||
|
|
||||||
import numpy as np
|
import numpy as np
|
||||||
|
|
||||||
from precise.util import buffer_to_audio
|
|
||||||
from precise.model import load_precise_model
|
from precise.model import load_precise_model
|
||||||
from precise.params import inject_params
|
from precise.params import inject_params
|
||||||
|
from precise.util import buffer_to_audio
|
||||||
|
|
||||||
|
|
||||||
class Runner(metaclass=ABCMeta):
|
class Runner(metaclass=ABCMeta):
|
||||||
|
|
@ -70,6 +69,7 @@ class KerasRunner(Runner):
|
||||||
|
|
||||||
class Listener:
|
class Listener:
|
||||||
"""Listener that preprocesses audio into MFCC vectors and executes neural networks"""
|
"""Listener that preprocesses audio into MFCC vectors and executes neural networks"""
|
||||||
|
|
||||||
def __init__(self, model_name: str, chunk_size: int = -1, runner_cls: type = None):
|
def __init__(self, model_name: str, chunk_size: int = -1, runner_cls: type = None):
|
||||||
self.window_audio = np.array([])
|
self.window_audio = np.array([])
|
||||||
self.pr = inject_params(model_name)
|
self.pr = inject_params(model_name)
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
# Python 3
|
|
||||||
# Copyright (c) 2017 Mycroft AI Inc.
|
# Copyright (c) 2017 Mycroft AI Inc.
|
||||||
import json
|
import json
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
from math import floor
|
from math import floor
|
||||||
|
|
||||||
import numpy as np
|
import numpy as np
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,17 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
# Copyright (c) 2017 Mycroft AI Inc.
|
||||||
from typing import *
|
from typing import *
|
||||||
from typing import BinaryIO
|
from typing import BinaryIO
|
||||||
|
|
||||||
import numpy as np
|
import numpy as np
|
||||||
|
|
||||||
from precise.util import audio_to_buffer
|
|
||||||
from precise.params import pr
|
from precise.params import pr
|
||||||
|
from precise.util import audio_to_buffer
|
||||||
|
|
||||||
|
|
||||||
class PocketsphinxListener:
|
class PocketsphinxListener:
|
||||||
"""Pocketsphinx listener implementation used for comparison with Precise"""
|
"""Pocketsphinx listener implementation used for comparison with Precise"""
|
||||||
|
|
||||||
def __init__(self, key_phrase, dict_file, hmm_folder, threshold=1e-90, chunk_size=-1):
|
def __init__(self, key_phrase, dict_file, hmm_folder, threshold=1e-90, chunk_size=-1):
|
||||||
from pocketsphinx import Decoder
|
from pocketsphinx import Decoder
|
||||||
config = Decoder.default_config()
|
config = Decoder.default_config()
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,9 @@
|
||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
# Copyright (c) 2017 Mycroft AI Inc.
|
# Copyright (c) 2017 Mycroft AI Inc.
|
||||||
|
|
||||||
import sys
|
|
||||||
|
|
||||||
sys.path += ['.', 'runner'] # noqa
|
|
||||||
|
|
||||||
from threading import Event
|
|
||||||
from random import randint
|
from random import randint
|
||||||
from subprocess import Popen
|
from subprocess import Popen
|
||||||
|
from threading import Event
|
||||||
|
|
||||||
from prettyparse import create_parser
|
from prettyparse import create_parser
|
||||||
|
|
||||||
from precise.pocketsphinx.listener import PocketsphinxListener
|
from precise.pocketsphinx.listener import PocketsphinxListener
|
||||||
|
|
|
||||||
|
|
@ -2,13 +2,13 @@
|
||||||
# Copyright (c) 2017 Mycroft AI Inc.
|
# Copyright (c) 2017 Mycroft AI Inc.
|
||||||
import wave
|
import wave
|
||||||
from subprocess import check_output, PIPE
|
from subprocess import check_output, PIPE
|
||||||
|
|
||||||
from prettyparse import create_parser
|
from prettyparse import create_parser
|
||||||
|
|
||||||
from precise.pocketsphinx.listener import PocketsphinxListener
|
from precise.pocketsphinx.listener import PocketsphinxListener
|
||||||
from precise.scripts.test import show_stats
|
from precise.scripts.test import show_stats
|
||||||
from precise.train_data import TrainData
|
from precise.train_data import TrainData
|
||||||
|
|
||||||
|
|
||||||
usage = '''
|
usage = '''
|
||||||
Test a dataset using Pocketsphinx
|
Test a dataset using Pocketsphinx
|
||||||
|
|
||||||
|
|
@ -35,7 +35,9 @@ usage = '''
|
||||||
|
|
||||||
|
|
||||||
def eval_file(filename) -> float:
|
def eval_file(filename) -> float:
|
||||||
transcription = check_output(['pocketsphinx_continuous', '-kws_threshold', '1e-20', '-keyphrase', 'hey my craft', '-infile', filename], stderr=PIPE)
|
transcription = check_output(
|
||||||
|
['pocketsphinx_continuous', '-kws_threshold', '1e-20', '-keyphrase', 'hey my craft',
|
||||||
|
'-infile', filename], stderr=PIPE)
|
||||||
return float(bool(transcription) and not transcription.isspace())
|
return float(bool(transcription) and not transcription.isspace())
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -44,7 +46,8 @@ def main():
|
||||||
data = TrainData.from_both(args.db_file, args.db_folder, args.data_dir)
|
data = TrainData.from_both(args.db_file, args.db_folder, args.data_dir)
|
||||||
print('Data:', data)
|
print('Data:', data)
|
||||||
|
|
||||||
listener = PocketsphinxListener(args.key_phrase, args.dict_file, args.hmm_folder, args.threshold)
|
listener = PocketsphinxListener(args.key_phrase, args.dict_file, args.hmm_folder,
|
||||||
|
args.threshold)
|
||||||
|
|
||||||
def run_test(filenames, name):
|
def run_test(filenames, name):
|
||||||
print()
|
print()
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,10 @@
|
||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
# Attribution: This script was adapted from https://github.com/amir-abdi/keras_to_tensorflow
|
# Attribution: This script was adapted from https://github.com/amir-abdi/keras_to_tensorflow
|
||||||
# Copyright (c) 2017 Mycroft AI Inc.
|
# Copyright (c) 2017 Mycroft AI Inc.
|
||||||
|
|
||||||
import sys
|
|
||||||
|
|
||||||
sys.path += ['.'] # noqa
|
|
||||||
|
|
||||||
import os
|
import os
|
||||||
from os.path import split, isfile
|
from os.path import split, isfile
|
||||||
from shutil import copyfile
|
from shutil import copyfile
|
||||||
|
|
||||||
from prettyparse import create_parser
|
from prettyparse import create_parser
|
||||||
|
|
||||||
usage = '''
|
usage = '''
|
||||||
|
|
|
||||||
|
|
@ -1,15 +1,12 @@
|
||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
# Copyright (c) 2017 Mycroft AI Inc.
|
# Copyright (c) 2017 Mycroft AI Inc.
|
||||||
import sys
|
|
||||||
|
|
||||||
sys.path += ['.'] # noqa
|
|
||||||
|
|
||||||
import json
|
import json
|
||||||
|
|
||||||
from precise.network_runner import Listener
|
|
||||||
from precise.scripts.test import show_stats
|
|
||||||
from prettyparse import create_parser
|
from prettyparse import create_parser
|
||||||
|
|
||||||
|
from precise.network_runner import Listener
|
||||||
from precise.params import inject_params
|
from precise.params import inject_params
|
||||||
|
from precise.scripts.test import show_stats
|
||||||
from precise.train_data import TrainData
|
from precise.train_data import TrainData
|
||||||
|
|
||||||
usage = '''
|
usage = '''
|
||||||
|
|
|
||||||
|
|
@ -1,18 +1,15 @@
|
||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
# Copyright (c) 2017 Mycroft AI Inc.
|
# Copyright (c) 2017 Mycroft AI Inc.
|
||||||
import sys
|
|
||||||
|
|
||||||
sys.path += ['.', 'runner'] # noqa
|
|
||||||
|
|
||||||
from threading import Event
|
|
||||||
from random import randint
|
|
||||||
from os.path import join
|
from os.path import join
|
||||||
|
from random import randint
|
||||||
from subprocess import Popen
|
from subprocess import Popen
|
||||||
from prettyparse import create_parser
|
from threading import Event
|
||||||
import numpy as np
|
|
||||||
|
import numpy as np
|
||||||
|
from prettyparse import create_parser
|
||||||
|
|
||||||
from precise.util import save_audio, buffer_to_audio
|
|
||||||
from precise.network_runner import Listener
|
from precise.network_runner import Listener
|
||||||
|
from precise.util import save_audio, buffer_to_audio
|
||||||
from precise_runner import PreciseRunner
|
from precise_runner import PreciseRunner
|
||||||
from precise_runner.runner import ListenerEngine
|
from precise_runner.runner import ListenerEngine
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,15 +1,12 @@
|
||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
# Copyright (c) 2017 Mycroft AI Inc.
|
# Copyright (c) 2017 Mycroft AI Inc.
|
||||||
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
sys.path += ['.'] # noqa
|
|
||||||
|
|
||||||
import os
|
|
||||||
from prettyparse import create_parser
|
from prettyparse import create_parser
|
||||||
|
|
||||||
from precise.network_runner import Listener
|
|
||||||
from precise import __version__
|
from precise import __version__
|
||||||
|
from precise.network_runner import Listener
|
||||||
|
|
||||||
usage = '''
|
usage = '''
|
||||||
stdin should be a stream of raw int16 audio, written in
|
stdin should be a stream of raw int16 audio, written in
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,9 @@
|
||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
# Copyright (c) 2017 Mycroft AI Inc.
|
# Copyright (c) 2017 Mycroft AI Inc.
|
||||||
|
|
||||||
import sys
|
|
||||||
|
|
||||||
sys.path += ['.'] # noqa
|
|
||||||
|
|
||||||
from prettyparse import create_parser
|
from prettyparse import create_parser
|
||||||
from precise.params import inject_params
|
|
||||||
from precise.model import load_precise_model
|
from precise.model import load_precise_model
|
||||||
|
from precise.params import inject_params
|
||||||
from precise.train_data import TrainData
|
from precise.train_data import TrainData
|
||||||
|
|
||||||
usage = '''
|
usage = '''
|
||||||
|
|
|
||||||
|
|
@ -1,15 +1,10 @@
|
||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
# Copyright (c) 2017 Mycroft AI Inc.
|
# Copyright (c) 2017 Mycroft AI Inc.
|
||||||
|
|
||||||
import sys
|
|
||||||
|
|
||||||
sys.path += ['.'] # noqa
|
|
||||||
|
|
||||||
from prettyparse import create_parser
|
from prettyparse import create_parser
|
||||||
|
|
||||||
from precise.train_data import TrainData
|
|
||||||
from precise.model import create_model
|
from precise.model import create_model
|
||||||
from precise.params import inject_params, save_params
|
from precise.params import inject_params, save_params
|
||||||
|
from precise.train_data import TrainData
|
||||||
|
|
||||||
usage = '''
|
usage = '''
|
||||||
Train a new model on a dataset
|
Train a new model on a dataset
|
||||||
|
|
|
||||||
|
|
@ -1,22 +1,18 @@
|
||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
# Copyright (c) 2017 Mycroft AI Inc.
|
# Copyright (c) 2017 Mycroft AI Inc.
|
||||||
|
from glob import glob
|
||||||
import sys
|
from os import makedirs
|
||||||
|
from os.path import basename, splitext, isfile, join
|
||||||
sys.path += ['.'] # noqa
|
from random import random
|
||||||
|
from typing import *
|
||||||
|
|
||||||
import numpy as np
|
import numpy as np
|
||||||
from os import makedirs
|
|
||||||
from random import random
|
|
||||||
from glob import glob
|
|
||||||
from os.path import basename, splitext, isfile, join
|
|
||||||
from typing import *
|
|
||||||
from prettyparse import create_parser
|
from prettyparse import create_parser
|
||||||
|
|
||||||
from precise.train_data import TrainData
|
|
||||||
from precise.network_runner import Listener, KerasRunner
|
|
||||||
from precise.model import create_model
|
from precise.model import create_model
|
||||||
|
from precise.network_runner import Listener, KerasRunner
|
||||||
from precise.params import inject_params
|
from precise.params import inject_params
|
||||||
|
from precise.train_data import TrainData
|
||||||
from precise.util import load_audio, save_audio
|
from precise.util import load_audio, save_audio
|
||||||
|
|
||||||
usage = '''
|
usage = '''
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,4 @@
|
||||||
# Python 3
|
|
||||||
# Copyright (c) 2017 Mycroft AI Inc.
|
# Copyright (c) 2017 Mycroft AI Inc.
|
||||||
|
|
||||||
import json
|
import json
|
||||||
from argparse import ArgumentParser
|
from argparse import ArgumentParser
|
||||||
from hashlib import md5
|
from hashlib import md5
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
# Copyright (c) 2017 Mycroft AI Inc.
|
||||||
from typing import *
|
from typing import *
|
||||||
|
|
||||||
import numpy as np
|
import numpy as np
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
|
# Copyright (c) 2017 Mycroft AI Inc.
|
||||||
from typing import *
|
from typing import *
|
||||||
|
|
||||||
import numpy as np
|
import numpy as np
|
||||||
|
|
||||||
from precise.util import load_audio
|
|
||||||
from precise.params import pr
|
from precise.params import pr
|
||||||
|
from precise.util import load_audio
|
||||||
|
|
||||||
inhibit_t = 0.4
|
inhibit_t = 0.4
|
||||||
inhibit_dist_t = 1.0
|
inhibit_dist_t = 1.0
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,5 @@
|
||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
# Copyright (c) 2017 Mycroft AI Inc.
|
# Copyright (c) 2017 Mycroft AI Inc.
|
||||||
|
|
||||||
import sys
|
|
||||||
|
|
||||||
sys.path += ['.', 'runner'] # noqa
|
|
||||||
|
|
||||||
from argparse import ArgumentParser
|
from argparse import ArgumentParser
|
||||||
from subprocess import Popen
|
from subprocess import Popen
|
||||||
from precise_runner import PreciseRunner, PreciseEngine
|
from precise_runner import PreciseRunner, PreciseEngine
|
||||||
|
|
@ -23,10 +18,10 @@ def main():
|
||||||
Popen(['aplay', '-q', 'data/activate.wav'])
|
Popen(['aplay', '-q', 'data/activate.wav'])
|
||||||
|
|
||||||
engine = PreciseEngine('./precise/stream.py', args.model)
|
engine = PreciseEngine('./precise/stream.py', args.model)
|
||||||
PreciseRunner(engine, on_prediction=on_prediction, on_activation=on_activation, trigger_level=0).start()
|
PreciseRunner(engine, on_prediction=on_prediction, on_activation=on_activation,
|
||||||
|
trigger_level=0).start()
|
||||||
Event().wait() # Wait forever
|
Event().wait() # Wait forever
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1 +1 @@
|
||||||
from .runner import PreciseRunner, PreciseEngine
|
from .runner import PreciseRunner, PreciseEngine
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
# Python 2 + 3
|
# Python 2 + 3
|
||||||
# Copyright (c) 2017 Mycroft AI Inc.
|
# Copyright (c) 2017 Mycroft AI Inc.
|
||||||
|
|
||||||
import atexit
|
import atexit
|
||||||
from subprocess import PIPE, Popen
|
from subprocess import PIPE, Popen
|
||||||
from threading import Thread
|
from threading import Thread
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
|
# Copyright (c) 2017 Mycroft AI Inc.
|
||||||
from setuptools import setup, find_packages
|
from setuptools import setup, find_packages
|
||||||
|
|
||||||
setup(
|
setup(
|
||||||
|
|
@ -15,7 +15,7 @@ setup(
|
||||||
description='Wrapper to use Mycroft Precise Wake Word Listener',
|
description='Wrapper to use Mycroft Precise Wake Word Listener',
|
||||||
keywords='wakeword keyword wake word listener sound',
|
keywords='wakeword keyword wake word listener sound',
|
||||||
url='http://github.com/MycroftAI/mycroft-precise',
|
url='http://github.com/MycroftAI/mycroft-precise',
|
||||||
|
|
||||||
zip_safe=True,
|
zip_safe=True,
|
||||||
classifiers=[
|
classifiers=[
|
||||||
'Development Status :: 3 - Alpha',
|
'Development Status :: 3 - Alpha',
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue