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 *
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,3 +1,4 @@
 | 
			
		|||
# Copyright (c) 2017 Mycroft AI Inc.
 | 
			
		||||
from os.path import isfile
 | 
			
		||||
from typing import *
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,4 +1,3 @@
 | 
			
		|||
# Python 3
 | 
			
		||||
# Copyright (c) 2017 Mycroft AI Inc.
 | 
			
		||||
from abc import abstractmethod, ABCMeta
 | 
			
		||||
from importlib import import_module
 | 
			
		||||
| 
						 | 
				
			
			@ -8,9 +7,9 @@ from typing import BinaryIO
 | 
			
		|||
 | 
			
		||||
import numpy as np
 | 
			
		||||
 | 
			
		||||
from precise.util import buffer_to_audio
 | 
			
		||||
from precise.model import load_precise_model
 | 
			
		||||
from precise.params import inject_params
 | 
			
		||||
from precise.util import buffer_to_audio
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class Runner(metaclass=ABCMeta):
 | 
			
		||||
| 
						 | 
				
			
			@ -70,6 +69,7 @@ class KerasRunner(Runner):
 | 
			
		|||
 | 
			
		||||
class Listener:
 | 
			
		||||
    """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):
 | 
			
		||||
        self.window_audio = np.array([])
 | 
			
		||||
        self.pr = inject_params(model_name)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,8 +1,8 @@
 | 
			
		|||
# Python 3
 | 
			
		||||
# Copyright (c) 2017 Mycroft AI Inc.
 | 
			
		||||
import json
 | 
			
		||||
from collections import namedtuple
 | 
			
		||||
from math import floor
 | 
			
		||||
 | 
			
		||||
import numpy as np
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,13 +1,17 @@
 | 
			
		|||
#!/usr/bin/env python3
 | 
			
		||||
# Copyright (c) 2017 Mycroft AI Inc.
 | 
			
		||||
from typing import *
 | 
			
		||||
from typing import BinaryIO
 | 
			
		||||
 | 
			
		||||
import numpy as np
 | 
			
		||||
 | 
			
		||||
from precise.util import audio_to_buffer
 | 
			
		||||
from precise.params import pr
 | 
			
		||||
from precise.util import audio_to_buffer
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class PocketsphinxListener:
 | 
			
		||||
    """Pocketsphinx listener implementation used for comparison with Precise"""
 | 
			
		||||
 | 
			
		||||
    def __init__(self, key_phrase, dict_file, hmm_folder, threshold=1e-90, chunk_size=-1):
 | 
			
		||||
        from pocketsphinx import Decoder
 | 
			
		||||
        config = Decoder.default_config()
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,13 +1,9 @@
 | 
			
		|||
#!/usr/bin/env python3
 | 
			
		||||
# Copyright (c) 2017 Mycroft AI Inc.
 | 
			
		||||
 | 
			
		||||
import sys
 | 
			
		||||
 | 
			
		||||
sys.path += ['.', 'runner']  # noqa
 | 
			
		||||
 | 
			
		||||
from threading import Event
 | 
			
		||||
from random import randint
 | 
			
		||||
from subprocess import Popen
 | 
			
		||||
from threading import Event
 | 
			
		||||
 | 
			
		||||
from prettyparse import create_parser
 | 
			
		||||
 | 
			
		||||
from precise.pocketsphinx.listener import PocketsphinxListener
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2,13 +2,13 @@
 | 
			
		|||
# Copyright (c) 2017 Mycroft AI Inc.
 | 
			
		||||
import wave
 | 
			
		||||
from subprocess import check_output, PIPE
 | 
			
		||||
 | 
			
		||||
from prettyparse import create_parser
 | 
			
		||||
 | 
			
		||||
from precise.pocketsphinx.listener import PocketsphinxListener
 | 
			
		||||
from precise.scripts.test import show_stats
 | 
			
		||||
from precise.train_data import TrainData
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
usage = '''
 | 
			
		||||
    Test a dataset using Pocketsphinx
 | 
			
		||||
    
 | 
			
		||||
| 
						 | 
				
			
			@ -35,7 +35,9 @@ usage = '''
 | 
			
		|||
 | 
			
		||||
 | 
			
		||||
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())
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -44,7 +46,8 @@ def main():
 | 
			
		|||
    data = TrainData.from_both(args.db_file, args.db_folder, args.data_dir)
 | 
			
		||||
    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):
 | 
			
		||||
        print()
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,14 +1,10 @@
 | 
			
		|||
#!/usr/bin/env python3
 | 
			
		||||
# Attribution: This script was adapted from https://github.com/amir-abdi/keras_to_tensorflow
 | 
			
		||||
# Copyright (c) 2017 Mycroft AI Inc.
 | 
			
		||||
 | 
			
		||||
import sys
 | 
			
		||||
 | 
			
		||||
sys.path += ['.']  # noqa
 | 
			
		||||
 | 
			
		||||
import os
 | 
			
		||||
from os.path import split, isfile
 | 
			
		||||
from shutil import copyfile
 | 
			
		||||
 | 
			
		||||
from prettyparse import create_parser
 | 
			
		||||
 | 
			
		||||
usage = '''
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,15 +1,12 @@
 | 
			
		|||
#!/usr/bin/env python3
 | 
			
		||||
# Copyright (c) 2017 Mycroft AI Inc.
 | 
			
		||||
import sys
 | 
			
		||||
 | 
			
		||||
sys.path += ['.']  # noqa
 | 
			
		||||
 | 
			
		||||
import json
 | 
			
		||||
 | 
			
		||||
from precise.network_runner import Listener
 | 
			
		||||
from precise.scripts.test import show_stats
 | 
			
		||||
from prettyparse import create_parser
 | 
			
		||||
 | 
			
		||||
from precise.network_runner import Listener
 | 
			
		||||
from precise.params import inject_params
 | 
			
		||||
from precise.scripts.test import show_stats
 | 
			
		||||
from precise.train_data import TrainData
 | 
			
		||||
 | 
			
		||||
usage = '''
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,18 +1,15 @@
 | 
			
		|||
#!/usr/bin/env python3
 | 
			
		||||
# 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 random import randint
 | 
			
		||||
from subprocess import Popen
 | 
			
		||||
from prettyparse import create_parser
 | 
			
		||||
import numpy as np
 | 
			
		||||
from threading import Event
 | 
			
		||||
 | 
			
		||||
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.util import save_audio, buffer_to_audio
 | 
			
		||||
from precise_runner import PreciseRunner
 | 
			
		||||
from precise_runner.runner import ListenerEngine
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,15 +1,12 @@
 | 
			
		|||
#!/usr/bin/env python3
 | 
			
		||||
# Copyright (c) 2017 Mycroft AI Inc.
 | 
			
		||||
 | 
			
		||||
import os
 | 
			
		||||
import sys
 | 
			
		||||
 | 
			
		||||
sys.path += ['.']  # noqa
 | 
			
		||||
 | 
			
		||||
import os
 | 
			
		||||
from prettyparse import create_parser
 | 
			
		||||
 | 
			
		||||
from precise.network_runner import Listener
 | 
			
		||||
from precise import __version__
 | 
			
		||||
from precise.network_runner import Listener
 | 
			
		||||
 | 
			
		||||
usage = '''
 | 
			
		||||
    stdin should be a stream of raw int16 audio, written in
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,13 +1,9 @@
 | 
			
		|||
#!/usr/bin/env python3
 | 
			
		||||
# Copyright (c) 2017 Mycroft AI Inc.
 | 
			
		||||
 | 
			
		||||
import sys
 | 
			
		||||
 | 
			
		||||
sys.path += ['.']  # noqa
 | 
			
		||||
 | 
			
		||||
from prettyparse import create_parser
 | 
			
		||||
from precise.params import inject_params
 | 
			
		||||
 | 
			
		||||
from precise.model import load_precise_model
 | 
			
		||||
from precise.params import inject_params
 | 
			
		||||
from precise.train_data import TrainData
 | 
			
		||||
 | 
			
		||||
usage = '''
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,15 +1,10 @@
 | 
			
		|||
#!/usr/bin/env python3
 | 
			
		||||
# Copyright (c) 2017 Mycroft AI Inc.
 | 
			
		||||
 | 
			
		||||
import sys
 | 
			
		||||
 | 
			
		||||
sys.path += ['.']  # noqa
 | 
			
		||||
 | 
			
		||||
from prettyparse import create_parser
 | 
			
		||||
 | 
			
		||||
from precise.train_data import TrainData
 | 
			
		||||
from precise.model import create_model
 | 
			
		||||
from precise.params import inject_params, save_params
 | 
			
		||||
from precise.train_data import TrainData
 | 
			
		||||
 | 
			
		||||
usage = '''
 | 
			
		||||
    Train a new model on a dataset
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,22 +1,18 @@
 | 
			
		|||
#!/usr/bin/env python3
 | 
			
		||||
# Copyright (c) 2017 Mycroft AI Inc.
 | 
			
		||||
 | 
			
		||||
import sys
 | 
			
		||||
 | 
			
		||||
sys.path += ['.']  # noqa
 | 
			
		||||
from glob import glob
 | 
			
		||||
from os import makedirs
 | 
			
		||||
from os.path import basename, splitext, isfile, join
 | 
			
		||||
from random import random
 | 
			
		||||
from typing import *
 | 
			
		||||
 | 
			
		||||
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 precise.train_data import TrainData
 | 
			
		||||
from precise.network_runner import Listener, KerasRunner
 | 
			
		||||
from precise.model import create_model
 | 
			
		||||
from precise.network_runner import Listener, KerasRunner
 | 
			
		||||
from precise.params import inject_params
 | 
			
		||||
from precise.train_data import TrainData
 | 
			
		||||
from precise.util import load_audio, save_audio
 | 
			
		||||
 | 
			
		||||
usage = '''
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,6 +1,4 @@
 | 
			
		|||
# Python 3
 | 
			
		||||
# Copyright (c) 2017 Mycroft AI Inc.
 | 
			
		||||
 | 
			
		||||
import json
 | 
			
		||||
from argparse import ArgumentParser
 | 
			
		||||
from hashlib import md5
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,3 +1,4 @@
 | 
			
		|||
# Copyright (c) 2017 Mycroft AI Inc.
 | 
			
		||||
from typing import *
 | 
			
		||||
 | 
			
		||||
import numpy as np
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,10 +1,10 @@
 | 
			
		|||
# Copyright (c) 2017 Mycroft AI Inc.
 | 
			
		||||
from typing import *
 | 
			
		||||
 | 
			
		||||
import numpy as np
 | 
			
		||||
 | 
			
		||||
from precise.util import load_audio
 | 
			
		||||
from precise.params import pr
 | 
			
		||||
 | 
			
		||||
from precise.util import load_audio
 | 
			
		||||
 | 
			
		||||
inhibit_t = 0.4
 | 
			
		||||
inhibit_dist_t = 1.0
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,10 +1,5 @@
 | 
			
		|||
#!/usr/bin/env python3
 | 
			
		||||
# Copyright (c) 2017 Mycroft AI Inc.
 | 
			
		||||
 | 
			
		||||
import sys
 | 
			
		||||
 | 
			
		||||
sys.path += ['.', 'runner']  # noqa
 | 
			
		||||
 | 
			
		||||
from argparse import ArgumentParser
 | 
			
		||||
from subprocess import Popen
 | 
			
		||||
from precise_runner import PreciseRunner, PreciseEngine
 | 
			
		||||
| 
						 | 
				
			
			@ -23,10 +18,10 @@ def main():
 | 
			
		|||
        Popen(['aplay', '-q', 'data/activate.wav'])
 | 
			
		||||
 | 
			
		||||
    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
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
if __name__ == '__main__':
 | 
			
		||||
    main()
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1 +1 @@
 | 
			
		|||
from .runner import PreciseRunner, PreciseEngine
 | 
			
		||||
from .runner import PreciseRunner, PreciseEngine
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,6 +1,5 @@
 | 
			
		|||
# Python 2 + 3
 | 
			
		||||
# Copyright (c) 2017 Mycroft AI Inc.
 | 
			
		||||
 | 
			
		||||
import atexit
 | 
			
		||||
from subprocess import PIPE, Popen
 | 
			
		||||
from threading import Thread
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,5 +1,5 @@
 | 
			
		|||
#!/usr/bin/env python3
 | 
			
		||||
 | 
			
		||||
# Copyright (c) 2017 Mycroft AI Inc.
 | 
			
		||||
from setuptools import setup, find_packages
 | 
			
		||||
 | 
			
		||||
setup(
 | 
			
		||||
| 
						 | 
				
			
			@ -15,7 +15,7 @@ setup(
 | 
			
		|||
    description='Wrapper to use Mycroft Precise Wake Word Listener',
 | 
			
		||||
    keywords='wakeword keyword wake word listener sound',
 | 
			
		||||
    url='http://github.com/MycroftAI/mycroft-precise',
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    zip_safe=True,
 | 
			
		||||
    classifiers=[
 | 
			
		||||
        'Development Status :: 3 - Alpha',
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue