Commit Graph

266 Commits (mark-ii/qa)

Author SHA1 Message Date
Åke Forslund cd1c3b7c1d Cleanup docstrings in configuration module 2020-05-18 14:29:42 +02:00
Åke Forslund 91dbe76d58 Add messagebus message to clear patch data 2020-05-18 14:29:42 +02:00
Åke Forslund f19547860b Update polly access key config to match AWS better
key_id -> access_key_id
secret_key -> secret_access_key
2020-04-19 17:53:02 +02:00
jarbasal 3707df87b3 update to newer TTS architecture 2020-04-19 17:25:38 +02:00
Aditya Mehra c5c0881d94 Add configuration option to set microphone timeout
listener->recording_timeout: Maximum length of recording
listener->recording_timeout: Maximum length of silence before stopping
recording
2020-04-17 11:23:25 +02:00
ludwhe 9403665f8e Comment out 'save_path' by default 2020-02-27 08:33:11 +01:00
ludwhe af6b7353e6 Added a "save_path" configuration for saved wake words and utterances. 2020-02-27 08:33:06 +01:00
Kris Gesling bf2db3d79a
Merge pull request #2472 from belvederef/patch-1
Convert hash sign comments to double slash (# -> //)
2020-02-24 23:04:14 +09:30
Åke Forslund 9ea0abe264 Update default branch for skill updates to 20.02
This referes to the settings made to msm when used by the installer
skill and the default skill updates done in the skills process
2020-02-19 08:02:02 +01:00
Francesco Belvedere e7703da3d1
Convert hash sign comments to double slash (# -> //)
The hash sing makes it difficult to deal with the json file. Even using tools like [jsmin](https://github.com/tikitu/jsmin/) does not help since hashes are not supported. To enhance interoperability and consistency, they can be removed (also because only two lines use them).
2020-02-14 23:08:11 +00:00
Åke Forslund dd6732997b Remove the ConfigurationManager compatibility
ConfigurationManager has been deprecated since 0.9.4 so it's time to
remove it completely
2020-02-11 14:48:44 +01:00
andlo 7b4891d07a enable seting for patadious single_thread in mycroft.conf 2020-01-06 19:32:29 +00:00
Sylvia van Os 555c2f897b
Fix documentation mistake 2019-12-26 22:28:58 +01:00
Åke b298061ddc
Merge pull request #2289 from UltraCoderRU/dev
Add Yandex TTS support
2019-09-30 20:29:17 +02:00
Kirill Kirilenko 58931310e9 Add Yandex TTS support 2019-09-30 20:13:04 +02:00
Kirill Kirilenko 1faf7b2210 Add Yandex STT support 2019-09-30 17:38:36 +02:00
Åke Forslund e2d5b92bfe Remove deprecated methods and checks 2019-09-02 11:45:32 +02:00
Åke Forslund 3d37315bc0 Utilize pulseaudio's corking/ducking feature
Pulseaudio allows corking / ducking for streams with prioritized roles
This sets the role for the mycroft speech to "phone" and all other to
"music" if the config tts->pulse_duck is set to true.
2019-08-31 14:27:06 +02:00
Åke Forslund 0df90a2f80 Switch msm branch to 19.08 2019-08-30 09:45:37 +02:00
Chris Veilleux 0bde1bc9df Refactor skill service (#2220)
Major refactoring of the skills startup sequence
- Restructure to a less nested structure
- Remove usage of globals by wrapping a lot of state variables into a class this allows for things like caching a negative pairing status throughout the startup process
2019-07-26 08:53:27 +02:00
Åke da00b38f82 Explain the config system used here. (#2201)
- Add module docstring
- Add comment in the init class method about setting up the log level
- Add mycroft.util.log to the readthedocs documentation
- Add comment in the config about the log_level
2019-07-11 17:39:50 -05:00
Steve Penrod 115bf77763 Restored ability to store wakewords locally (#2141)
* Restored ability to store wakewords locally

The code that handles the local save of wake words configuration -
"record_wake_words" - was removed some time ago.  This restores that
capability.


Add the following to mycroft.conf
  {
    "listener": {
       "record_wake_words": true
    }
  }

Then restart Mycroft.  It should begin saving .wav files under the
/tmp/mycroft_wake_words directory.

The filename, will be  filename structure is: 

<accountId>_<engine>_<model>_<name>_<sessionId>_<time>.wav


* Add documentation for 'record_wake_words' and improve the doc for
'save_utterances'.
2019-05-31 16:07:50 +02:00
Ruthvicp 90ccae2f69 Cache pre-loading for mimic2
When the mimic2 TTS instance is created the phrases from mycroft-core and mycroft-wifi setup (if available) is generated and stored locally (defaults to /opt/mycroft/preloaded_cache but can be changed with the mimic2 config parameter "preloaded_cache"

On startup the cache will be copied into the cache directory to speed up default interactions.
2019-05-13 14:33:30 +02:00
Kate Canaveral b95c8c990b Fix typo in mycroft.conf (#2119) 2019-05-12 23:11:41 -07:00
Åke d2690979db
Merge pull request #2098 from MycroftAI/feature/precise-default
Change default listener in config
2019-04-16 13:41:27 +02:00
Åke 3841d5c13c
Merge pull request #2096 from MycroftAI/commonIoT/acknowledge
CommonIOT/acknowledge
2019-04-16 11:14:27 +02:00
Matthew D. Scholefield 794d91e7f7 Change default listener in config
It has been previously set using other configurations like /etc/mycroft.conf on the Mark 1
2019-04-15 11:11:21 -05:00
Chris Rogers 2a6f113151 Add function to acknowledge success non-verbally 2019-04-14 10:11:52 -04:00
Steve Penrod 663d6821b2 Remove "stop_threshold"
The setting "stop_threshold" is not used (and doesn't look like it ever was).  Removing
from mycroft.conf.
2019-04-08 23:01:54 -05:00
Matthew D. Scholefield a9fb77a27c Make precise sensitivity configurable 2019-03-21 17:45:38 -05:00
Åke 9f29649fc0 Feature/non hard coded paths (#2058)
* Allow ~ when running ensure_directory_exists

* Add custom paths for websettings cache and system conf
2019-03-21 13:19:11 -05:00
Steve Penrod d65555c327 Deprecate self.config in skills (#2025)
* Deprecate self.config in skills

Skills should contain their own settings, the self.config concept is being
deprecated.

Also removed the defaults set for several old MycroftAI skills.  The 19.02
version of these Skills initializes the default values using:
```python
self.settings["key"] = default
```

* Update padatious config to work with the config property.
2019-02-28 10:50:08 +01:00
Åke ff6d7ed164
Merge pull request #2003 from MycroftAI/feature/19.02-versions
Update versions to 19.02
2019-02-28 08:19:30 +01:00
Åke 6c14d7bc36 Refactor/19.02 removes (#2019)
* Remove the deprecated emitter

* Remove channels config key for listener

This has never been used.
2019-02-28 00:09:47 -06:00
Åke Forslund 26be970ae1 Update default msm branch to 19.02. 2019-02-18 18:27:09 +01:00
Åke Forslund bcae0ac4bd Update default config
- Move "save_utterenaces" comments to correct block
- Correct information, records utterance not wakeword
- replace "record_utterances" with the new "save_utterances"
2019-02-11 15:52:48 +01:00
Steve Penrod 28f18b745d
Document "save_utterance" option
The Listener has an option to save the sound that was recognized as a wake-word.   This isn't new functionality, but was previously undocumented.
2019-02-04 15:34:37 -06:00
Åke Forslund 38701a9790 Remove inheritance from object
Inheriting from object isn't necessary in python3.
2019-01-11 09:24:21 +01:00
Steve Penrod 2557637591 Support selecting microphone by name
Normally Mycroft will use the default PortAudio input device as the
microphone input for the user.  However in some cases there is reason
to specify a different input.

The "device_index" under the "listener" section in mycroft.conf has
always allowed a user to select the microphone explicitly.  But on
some systems the indices can change from reboot to reboot.  So this
adds the "device_name" setting.  If it exists (and the "device_index"
has not been specified explicitly), a regex match will be run against
the PortAudio device names.

When "device_name" is used, the voice.log will contain a listing of
the devices as they are tested.  This can be used to debug if a
name isn't matching as expected.

EXAMPLES:
/etc/mycroft/mycroft.conf
```
{
    "listener": {
        "device_name": "aawsrc"
    }
}
```
Would find a match against "aawsrc" or "aawsrcplug".  To force a specific
match, you can use a regex such as "aawsrc$".

/etc/mycroft/mycroft.conf
```
{
    "listener": {
        "device_index": 2
    }
}
```
The PortAudio device index specified will be used.

Names and indexes for PortAudio are difficult to guess.  The simplest way to
view them is either enter a value for "device_name" and look at the names
which appear in the log when starting Mycroft, or to run a simple program
such as:
```python
import pyaudio

pa = pyaudio.PyAudio()
for i in range(pa.get_device_count()):
    dev = pa.get_device_info_by_index(i)
    print((i, dev['name'], dev['maxInputChannels']))
```
2019-01-08 07:51:41 +01:00
Steve Penrod 1427992c99 Add basic barge-in functionality
The ability to "barge-in" has been lacking from Mycroft Core.  The Mark 1
microphone was unable to support this due to physical limitations, but the
Mark II and other implementations with more advanced mic tech which can
hear over themselves are able to continuously listen.

To enable this while retaining backwards compatibility with simpler mic.py
systems, there are now two mycroft.conf values:

{
   "listener": {
        "mute_during_output" : true,
        "duck_while_listening" : 0.3
   }
}

The above values are defaults, and implementers will likely override them
using the /etc/mycroft/mycroft.conf file when appropriate.

The duck_while_listening setting is currently handled in Mycroft's
skill-volume.  The mute_during_output is handled within mycroft-core itself.
2018-12-28 18:12:42 -06:00
Åke 630c853f25 Store config in more human readable form (#1915) 2018-12-26 11:55:45 -06:00
Åke 60462d8979
Merge pull request #1899 from MycroftAI/feature/gui
First pass at the GUI infrastructure
2018-12-05 09:23:08 +01:00
Francis Tyers fad4c71398 Update mycroft.conf (#1869)
Make it clearer how to blacklist skills, e.g. it's the `basename()` of the directory where the skill lives.
2018-11-12 20:23:04 -05:00
Steve Penrod aede71db86 First pass at support for the Qt/QML display:
Enclosures
* Create a mechanism to instantiate unique Enclosure classes, depending on the platform found in the SYSTEM mycroft.conf
* Implement a generic Enclosure, which support the new GUI protocol
* Implement a Mark 1 Enclosure (expects the serial connection to an Arduino)
* Implement the start of a Mark II enclosure
* Implement a generic enclosure (no screen)
* Implement the GUI announcement and protocol basics

MycroftSkill
* Implement the basis of the GUI-controlling interfaces.  Namely:
  - MycroftSkill.show_text()
  - MycroftSkill.show_image()
  - MycroftSkill.show_html()
  - MycroftSkill.show_page()
  - MycroftSkill.gui to set values for page displays.

Configuration
* Add "gui_websocket" to the mycroft.config.py
2018-11-06 01:48:16 -06:00
Åke Forslund 9bcddaf69a Upload skill manifest on write
- Convert skills.json format to new representation and upload
- Store skill installation time when installing defaults
2018-10-24 22:11:35 +02:00
Åke Forslund 260f54a386 Move config location definitions to separate file 2018-10-09 11:38:10 +02:00
jarbasal f262bd6f77 Read log level from both user and system config
Resolves issue #1728
2018-10-09 11:37:56 +02:00
Matthew Scholefield c6f9513e9d Allow local model file in precise 2018-09-04 22:59:52 -05:00
Åke Forslund 904cff9c47 Blacklist pianobar-skill 2018-08-30 19:23:51 +02:00
Åke Forslund 16437ea621 Switch msm branch to 18.08 2018-08-30 10:57:44 +02:00
Åke Forslund 7b4c6ed583 Audio service mimetypes
Add possibility for mimetypes to be passed with each track.
Make simple audio service try to detect mime type if missing
2018-08-23 08:41:01 +02:00
Michael Nguyen fe00294b4c Feature/mimic2 visemse (#1708)
* added ability to create visemes
* clean visemes code, added url to mycroft.conf
2018-08-02 15:08:10 -05:00
Josh Cox 2abb8fa74b Add Ogg123 support (#1678)
This is reimplementation of #1649 which became divergent.

## Description
Adds a Ogg123Service and a play_ogg exactly like Mpg123Service and play_mp3

## How to test
I have a skill for a podcast which does not have an mp3 feed:
https://github.com/joshuacox/skill-GNUworldOrder

## Contributor license agreement signed?
signed by @joshuacox
2018-07-26 22:25:39 -05:00
Åke 5cfea7f2d9 Update default config (#1648)
- Remove unused entries for skills
- Correct the entry for the NewsSkill
2018-07-19 02:08:23 -05:00
Matthew D. Scholefield e73c6c8e09
Merge pull request #1694 from MycroftAI/mimic2 2018-07-18 13:11:59 -05:00
Michael Nguyen 1ab9ae3889 Add Mimic 2 TTS
* added asynchronous request to mimic2 backend to break up audio into chunks

 * add chracter threshold

 * refactored split_by_punctuation

 * add punctuation function to sentence chunks

 * fix spelling

 * some more spelling

 * added mimic2 in mycroftconf

 * removed unused imports
2018-07-18 13:10:07 -05:00
Åke Forslund 0ae9ccda9a Make vlc ducking configurable 2018-07-10 11:21:33 +02:00
Matthew Scholefield 189e0f10ab Refactor Precise engine and support engine timeouts 2018-07-06 00:05:28 -05:00
JarbasAI db4740d407 Add Responsive voice tts (#1565)
Adds responsive voice as an optional TTS service.

See https://responsivevoice.org/text-to-speech-sdk/text-to-speech-widget/
2018-07-04 13:21:34 +02:00
JarbasAI d69e73ced9 govivace_stt (#1654)
* Add support for Govivace STT (https://www.govivace.com/)
2018-06-27 16:09:56 +02:00
Åke 5d6fd4d871
Merge pull request #1629 from MycroftAI/feature/https-ww-upload
Change wake word upload to https request
2018-06-07 08:58:28 +02:00
Matthew D. Scholefield 727e1c787c Change wake word upload to https request
Also strips out old alternative ways to enable wake word upload
The logic for uploading wake words is now:
 - Only if opt-in is enabled
 - With an additional "disable" setting to selectively prevent it
2018-06-06 14:53:11 -05:00
Åke Forslund 85365823bc Check that web cache exists before loading it 2018-05-25 22:52:15 +02:00
Matthew D. Scholefield 509162de50 Support tilda in data_dir 2018-05-23 15:03:01 -05:00
Matthew D. Scholefield b0b88bbd62 Remove all references to /opt/mycroft 2018-05-23 08:22:14 +02:00
Matthew D. Scholefield d6f5dd95c5 Make skill update interval configurable 2018-05-14 15:21:36 -05:00
Matthew D. Scholefield 033f5dc010 Add configuration values for msm 2018-05-10 13:11:03 -05:00
Åke 98ede52596
Merge pull request #1572 from MycroftAI/feature/py_msm
Cleanup skill loading and implement python msm
2018-05-09 23:25:40 +02:00
reginaneon c643cc9368 Typo in the Engine Options 2018-05-08 16:37:20 -05:00
Matthew D. Scholefield a20b5b565c Cleanup skill loading and implement python msm 2018-05-08 13:41:51 -05:00
Åke Forslund a2993e4ba6 Remove backwards compatibility with python 2.7 2018-04-27 08:51:47 -05:00
Åke Forslund b200d51d39 Fix test cases under python 3
Lots of minor fixes including, sorting dicts, making ints of strings,
     MagicMock file spec and some other things

A couple of issues in the mycroft-core code base were identified and
fixed. Most notably the incorrect version check for python three when
adding basestring.

Update .travis.yml
2018-04-27 08:50:46 -05:00
Michael Nguyen afd0dbb084 removed unecessary LOG 2018-04-26 16:18:31 -05:00
Michael Nguyen e941a1d0a7 removed unknown member from exception object 2018-04-26 16:17:45 -05:00
Michael Nguyen e05765bc12 change HTTPError exception into RequestException for a more general case 2018-04-26 15:23:10 -05:00
Michael Nguyen fbca77d8fc add try catch for failed remote fetch location 2018-04-26 14:39:53 -05:00
Åke 56a7e4cd01
Merge pull request #1512 from forslund/feature/whitelist-spotify
Re-enable spotify-skill.
2018-03-29 13:58:37 -05:00
Åke Forslund f94ee8d795 Load the volume skill before updates
Allows the user to adjust the volume during pairing
2018-03-29 12:13:28 -05:00
Åke Forslund 7332c3b344 Re-enable spotify-skill.
Remove spotify-skill from the black list
2018-03-29 18:47:20 +02:00
Åke dc538ecf60 Blacklist spotify-skill (#1479)
Emergeny blacklist to kill the poorly behaving Spotify OAUTH
2018-03-14 13:41:35 -05:00
Matthew D. Scholefield 9eb458360b Fix accessing non-existent attribute in except blocks
.request.status_code is only available to HTTPError objects
2018-03-14 00:41:47 -05:00
Matthew D. Scholefield 7e64b49fa3 Replace HTTPError with RequestException
This prevents things like a ReadTimeout exception crashing the speech service
2018-03-07 10:57:13 -06:00
Matthew D. Scholefield cdb1416252 Check for pairing before performing routine polling (#1451)
This gets rid of error messages during the pairing process
2018-02-28 15:41:23 -06:00
Matthew D. Scholefield 0b9dc9c630 Fix platform comment in config 2018-02-27 14:56:04 -06:00
penrods e52a503345 Improve docs within mycroft-conf
Clarified the merging process.  Also remove unused skill-sepecif settings.
2018-02-23 10:49:54 +01:00
Åke bda8a0cc94 Skip skill update on startup if recent (#1392)
* Skip skill update on startup if recent

Skills aren't updated on startup if the last update was less than 12
hours ago.

- msm adds a .msm file in the skills directory with a timestamp and a
    list of the skills installed by default
- the UPDATING screen message is moved to the SkillManger when direct
    update is scheduled.
- On internet connection the skill update time is scheduled
- Skills (other than priority skills) are not loaded until
- The timeout for when direct update is necessary is settable in the
    config.
internet connection has been verified (message on messagebus)
2018-02-15 02:43:06 -06:00
Åke d9c288129c Add support for deepspeech_server (#1370)
* Add support for deepspeech_server

deepspeech_server is a server running deepspeech (obviously). It's quite
easy to install and run (package available in pip and then a config file
pointing to the model)

This pr adds the DeepSpeechServerTTS class, a STT interface allowing
mycroft to use one of these servers.

config needed:

  "stt": {
    "module": "deepspeech_server",
    "deepspeech_server": {
      "uri": "http://IP-ADDRESS:PORT/stt"
    }
  }

* Add deepspeech_server example to mycroft.conf
2018-01-25 14:02:42 -06:00
Jarbas 5541c4717f is_remote_list check (#1365)
use is_remote_list() to verify that a list needs to be converted for use in mycroft.
2018-01-18 12:12:02 +01:00
Jarbas 905e5397ed bing + houndify stt (#1229)
Add bing and Houndify stt backends
2018-01-09 13:41:26 +01:00
jarbasai 6bba0f0ae4 Optional auto update 2018-01-03 10:09:25 +01:00
Åke 742558046d Python 2/3 compatibility (#1259)
Add Python 2/3 compatibility

====  Tech Notes ====
This allows the main bus, skills and cli to be run in both python 2.7 and
3.5+.

Mainly trivial changes
- syntax for exceptions
- logic for importing correct Queue module
- .iteritems -> future.utils.iteritems when accessing dicts key value
pairs

* Allow audio service to be run in python 3
* Make speech client work with python 3
* Importing of Queue version dependent
* Exception syntax corrected
* Creating sound buffer is version dependant
- Adapt context use range from builtins
- Use compatible next() instead of .next() when walking the skill
directory

* Make CLI Python 3 Compatible
- Use compatible BytesIO instead of StringsIO
- Open files as text instead of binary
- Make sure integer divisions are used

* Make messagebus send compatible
* Fix failing travis

Re-add future 0.16.0

* Make string checks compatible
* basestring doesn't exist in python 3 so it's imported from the "past"
* Fix latest compatibility issues in speech client
- handle urllib
- handle encoding before calling md5

* Make Api.build_json() python 2/3 compatible
2017-12-18 17:24:21 -06:00
Åke Forslund 9b0a4d72fe Add "debug" to default config 2017-12-07 10:52:14 -06:00
JarbasAI 53481a265d allow phonemes in any lang (#1264)
Add possibility to set language per hotword. If not specified will use global language setting.
2017-11-29 10:56:35 +01:00
Matthew D. Scholefield 5694b7f645 Extract precise server settings into config file
This allows changing the server in the future without an upgrade
2017-11-09 13:36:03 -06:00
Åke 15c4c94a71
Merge pull request #1207 from MycroftAI/bugfix/record-length
Fix wake word record length
2017-11-09 19:38:22 +01:00
Matthew D. Scholefield d67f8b4bcf Change unit back to milliseconds and length back to 120ms 2017-11-09 11:30:30 -06:00
Matthew D. Scholefield dba2c540af Fix wake word record length 2017-11-08 14:21:07 -06:00
Åke Forslund 9ce3c32688 Allow loading config directly from strings
====  Tech Notes ====
Before the refactoring of the configuration system the
ConfigurationManager allowed loading config files directly from strings.
This commit restores that functionality
2017-11-07 13:28:46 +01:00
Åke Forslund 9e67ba5614 Fix incorrect reference in patch 2017-11-03 09:38:09 +01:00
Åke Forslund f291e2704a Add missing inflection import
====  Tech Notes ====
inflection was not imported in configuration
2017-11-02 16:19:52 +01:00