Initial commit
commit
f8e1ddc5cb
|
@ -0,0 +1,2 @@
|
|||
/deps/
|
||||
/target/
|
|
@ -0,0 +1,50 @@
|
|||
mkfile_path := $(abspath $(lastword $(MAKEFILE_LIST)))
|
||||
current_dir := $(notdir $(patsubst %/,%,$(dir $(mkfile_path))))
|
||||
|
||||
# For now, download binaries of various dependencies
|
||||
#
|
||||
# Later, we will compile these from scratch
|
||||
deps: download-deps
|
||||
|
||||
clean:
|
||||
rm -R -- deps/*/
|
||||
|
||||
deep-clean:
|
||||
rm deps/*
|
||||
|
||||
download-deps: dep-sphinxbase dep-pocketsphinx
|
||||
|
||||
dep-sphinxbase:
|
||||
dep-pocketsphinx: deps/sphinx4-5prealpha-src.zip build-pocketsphinx
|
||||
|
||||
deps/sphinxbase-5prealpha.tar.gz:
|
||||
curl -L "https://downloads.sourceforge.net/project/cmusphinx/sphinxbase/5prealpha/sphinxbase-5prealpha.tar.gz" > deps/sphinxbase-5prealpha.tar.gz
|
||||
|
||||
deps/pocketsphinx-5prealpha.tar.gz:
|
||||
curl -L "https://downloads.sourceforge.net/project/cmusphinx/pocketsphinx/5prealpha/pocketsphinx-5prealpha.tar.gz" > deps/pocketsphinx-5prealpha.tar.gz
|
||||
|
||||
build-sphinxbase: deps/sphinxbase target/usr/include/sphinxbase
|
||||
|
||||
deps/sphinxbase: deps/sphinxbase-5prealpha.tar.gz
|
||||
tar -x -C deps -f deps/sphinxbase-5prealpha.tar.gz
|
||||
mv deps/sphinxbase-5prealpha deps/sphinxbase
|
||||
|
||||
## TODO: these don't really work, just run them manually for now
|
||||
|
||||
target/usr/include/sphinxbase:
|
||||
$( \
|
||||
cd deps/sphinxbase && \
|
||||
./configure --prefix=${current_dir}/target/usr && \
|
||||
make check && \
|
||||
make && \
|
||||
make install \
|
||||
)
|
||||
|
||||
build-pocketsphinx: deps/pocketsphinx target/usr/include/pocketsphinx
|
||||
$( \
|
||||
cd deps/sphinxbase && \
|
||||
./configure --prefix=${current_dir}/target/usr && \
|
||||
make check && \
|
||||
make && \
|
||||
make install \
|
||||
)
|
|
@ -0,0 +1,105 @@
|
|||
# Pardner
|
||||
|
||||
An offline voice agent designed to run on Linux desktops.
|
||||
|
||||
If I can, I'll make this a thin configuration around mycroft. If I can't, I'll
|
||||
build it using lots of Mozilla goodness.
|
||||
|
||||
## Targets
|
||||
|
||||
Here are a few sentences I'd like to work while sat at my computer.
|
||||
|
||||
* I'm starting work now
|
||||
* I've finished work now
|
||||
* "Read me the news"
|
||||
* "Tell me the weather"
|
||||
* "What's the time?"
|
||||
* "Install the updates"
|
||||
* "Go to sleep"
|
||||
* "Wake up" (yeah, right :p)
|
||||
* "Shutdown"
|
||||
* "Yes officer" / "You are under arrest" -> `rm -rf ~/secrets` ;)
|
||||
* "This is police brutality" -> webcam-on
|
||||
* "I weigh 75kg today"
|
||||
* "I ran 5 miles today"
|
||||
* "I ate too much yesterday"
|
||||
* "What's my fortune?"
|
||||
* "Who's online?"
|
||||
* "Is X online?"
|
||||
* "Play some Enya"
|
||||
* "Play some HARD ROCK"
|
||||
* ...
|
||||
|
||||
A few work-related ideas
|
||||
|
||||
* "Open a new issue"
|
||||
* "Close issue X"
|
||||
* (Other GL chat integrations)
|
||||
|
||||
Jasper's idea of notification modules is also interesting. It would be nice for
|
||||
the computer to talk to me when there's an aurora coming in, or disk space is
|
||||
getting low.
|
||||
|
||||
It would be good to replace Gnome's notification sounds with TTS of the
|
||||
notification text.
|
||||
|
||||
## Requirements
|
||||
|
||||
### Pocketsphinx
|
||||
|
||||
* sphinxbase
|
||||
* build-essential
|
||||
* swig
|
||||
* libpulse-dev
|
||||
* pocketsphinx
|
||||
* sphinxbase
|
||||
* libpulse-dev
|
||||
|
||||
### Building
|
||||
|
||||
**TODO**:
|
||||
|
||||
First, run `make deps`. It will download the necessary dependencies into the
|
||||
deps/ folder, compile them, and install the output into `target/usr`. If you
|
||||
already have an up-to-date pocketsphinx installed (I'm targeting 5-prealpha for
|
||||
now), you can skip this step.
|
||||
|
||||
|
||||
## Running
|
||||
|
||||
Nothing to run yet!
|
||||
|
||||
Playground
|
||||
|
||||
```
|
||||
target/usr/bin/pocketsphinx_continuous -inmic yes 2>/dev/null
|
||||
```
|
||||
|
||||
(We'll *probably* want to use the shared libraries directly, eventually)
|
||||
|
||||
Recognition is atrocious, for me at least.
|
||||
|
||||
Similar in concept to Jasper or Mycroft, except:
|
||||
|
||||
* No support for online, third-party STT operators \o/ \o/ \o/ . o O ( what about accuracy? )
|
||||
* Simple to install and run on desktop \o/ \o/ \o/ . o O ( Why would you want to do that? )
|
||||
|
||||
|
||||
## Bibliography
|
||||
|
||||
### Speech-to-text engines
|
||||
|
||||
1. [CMUSphinx](https://cmusphinx.github.io/)
|
||||
1. [DeepSpeech](https://github.com/mozilla/DeepSpeech)
|
||||
|
||||
### Open datasets
|
||||
|
||||
1. [Common Voice](https://voice.mozilla.org/)
|
||||
1. [Voxforge](http://www.voxforge.org)
|
||||
|
||||
### Other FOSS voice agents
|
||||
|
||||
1. [Jasper Project](https://jasperproject.github.io/)
|
||||
1. [Mycroft](https://mycroft.ai/)
|
||||
1. [Simon](https://simon.kde.org/)
|
||||
|
Loading…
Reference in New Issue