/respeaker_python_library

To build voice enabled objects/applications with Python and ReSpeaker

Primary LanguagePythonApache License 2.0Apache-2.0

ReSpeaker Python Library

Build Status

ReSpeaker is an open project to create voice enabled objects. ReSpeaker python library is an open source python library to provide basic functions of voice interaction.

It uses PocketSphinx for keyword spotting and uses webrtcvad for voice activity detecting.

Installation (Not for ReSpeaker Core)

Note: This library is already installed on ReSpeaker Core by default. Please skip the installation step and don't re-install it

python and pip are required.

  1. Install pocketsphinx, webrtcvad

On windows, we can use pre-compiled python wheel packages of pocketsphinx and pyaudio from speech_recognition. For python 2.7, run:

pip install https://github.com/respeaker/respeaker_python_library/releases/download/v0.4.1/pocketsphinx-0.0.9-cp27-cp27m-win32.whl
pip install https://github.com/respeaker/respeaker_python_library/releases/download/v0.4.1/webrtcvad-2.0.9.dev0-cp27-cp27m-win32.whl

On Linux

pip install pocketsphinx webrtcvad
  1. pip install pyaudio respeaker --upgrade

  2. Install hidapi (optional)

This step is required on OSX.

Getting started

import logging
import time
from threading import Thread, Event

from respeaker import Microphone


def task(quit_event):
    mic = Microphone(quit_event=quit_event)

    while not quit_event.is_set():
        if mic.wakeup('respeaker'):
            print('Wake up')
            data = mic.listen()
            text = mic.recognize(data)
            if text:
                print('Recognized %s' % text)


def main():
    logging.basicConfig(level=logging.DEBUG)

    quit_event = Event()
    thread = Thread(target=task, args=(quit_event,))
    thread.daemon = True
    thread.start()
    while True:
        try:
            time.sleep(1)
        except KeyboardInterrupt:
            print('Quit')
            quit_event.set()
            break
    time.sleep(1)

if __name__ == '__main__':
    main()