Initial commit

main
Nick Thomas 2018-02-20 01:23:27 +00:00
commit f8e1ddc5cb
No known key found for this signature in database
GPG Key ID: 2A313A47AFADACE9
5 changed files with 157 additions and 0 deletions

2
.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
/deps/
/target/

50
Makefile Normal file
View File

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

105
README.md Normal file
View File

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

0
deps/.gitkeep vendored Normal file
View File

0
target/.gitkeep Normal file
View File