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
Matthew D. Scholefield 2018-02-22 01:10:41 -06:00
parent d622eef3ec
commit cc32959e29
21 changed files with 48 additions and 76 deletions

View File

@ -1,3 +1,4 @@
# Copyright (c) 2017 Mycroft AI Inc.
from typing import * from typing import *

View File

@ -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 *

View File

@ -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)

View File

@ -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

View File

@ -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()

View File

@ -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

View File

@ -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()

View File

@ -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 = '''

View File

@ -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 = '''

View File

@ -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

View File

@ -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

View File

@ -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 = '''

View File

@ -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

View File

@ -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 = '''

View File

@ -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

View File

@ -1,3 +1,4 @@
# Copyright (c) 2017 Mycroft AI Inc.
from typing import * from typing import *
import numpy as np import numpy as np

View File

@ -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

View File

@ -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()

View File

@ -1 +1 @@
from .runner import PreciseRunner, PreciseEngine from .runner import PreciseRunner, PreciseEngine

View File

@ -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

View File

@ -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',