Commit Graph

58 Commits (mark-ii/log-rotation)

Author SHA1 Message Date
Michael Hansen 4f8a8f85d5 Avoid ignoring a cache TTS session when speaking 2022-03-02 22:27:35 +00:00
Michael Hansen 862176e4cc Use speech.cache event for TTS caching 2022-03-02 02:26:07 +00:00
Michael Hansen 391004d56c Allow TTS cache key to be explicitly set when using skill TTS cache functions. 2022-02-28 21:58:37 +00:00
Michael Hansen 1b780e8a5c Add TTS caching to skills and audio service 2022-02-22 22:04:14 +00:00
Michael Hansen d9414c1bd3 Fix multi-chunk TTS session/stopping 2022-02-10 17:08:09 +00:00
Michael Hansen 83c5e213c0 Actually handling TTS now 2022-01-21 15:50:13 +00:00
Michael Hansen cb29ef0848 Can't use audio service to play sounds because it deletes VLC stream 2022-01-19 19:59:08 +00:00
Michael Hansen 507d851f19 Use audio service to play ACK 2022-01-19 15:23:35 +00:00
Michael Hansen 3b740e7832 Play acknowledge sound when activity starts 2022-01-18 19:41:41 +00:00
Michael Hansen 707ffadb6b Clear TTS cache on new activity 2022-01-18 16:38:10 +00:00
Michael Hansen 51219509f3 Stop removing whitespace after periods to avoid mangling initialisms 2022-01-14 17:05:38 -05:00
Michael Hansen f9d2ef0104 Clear TTS queue when new skill speaks 2022-01-13 17:53:30 +00:00
Ken Smith ff01b7388b add pause and resume ability to tts playback thread and use it during barge in 2021-07-02 12:12:07 -04:00
Kris Gesling e75a05557b docstring cleanup 2021-05-11 15:10:32 +09:30
Chris Veilleux 4d4f797c5d Add the stack trace to an error message to help with debugging. 2021-03-10 13:39:58 -06:00
Åke Forslund 1ae6271051 Validate fallback TTS object
Verify that the fallback object can execute when creating it
2020-11-14 11:44:32 +01:00
Åke Forslund b581766a00 Fallback to mimic for bad http status codes
Added a RemoteTTSException exception for non-timeout exceptions, Mimic2
will consider HTTP status code 200-299 as OK while other responses will
trigger raise RemoteTTSException.
2020-02-17 15:08:21 +01:00
jarbasal 0de7f11c6e execute TTS from debug_cli 2020-02-15 15:35:43 +01:00
Jarbas-Core d16964c580 bus message targetting 2020-02-15 12:37:25 +01:00
Åke Forslund efb9cd1a01 Pass listen flag to fallback tts 2020-01-15 09:06:50 +01:00
Åke Forslund 6597ccc398 Send listen flag for special picroft case as well 2019-10-18 17:16:55 +02:00
Åke Forslund 29db163a78 Move listen trigger to last chunk of sentence
If rendering a chunk of a sentence takes too long time, the audio queue
may run out and trigger the listening.

This moves the listening trigger to after the last chunk.
2019-10-04 15:09:45 +02:00
Åke Forslund b480dda90f Clean up docstrings
Minor cleanup of docstrings in the files affected by the previous commit
2019-10-03 19:13:02 +02:00
Åke Forslund 46b0b94631 Don't go through FS when triggering listener.
This adds a separate handler for triggering listening on the
"mycroft.mic.listen" message
2019-10-03 19:12:56 +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
David Wagner ed6324d83b
tts_hash to an actual hash
tts_hash was initially set to the text of the config rather than hash so always loaded twice on boot (~750ms for create() for Mimic2)
2019-07-23 15:31:21 -05:00
Ruthvicp d2514b01be Remove additional space after initials 2019-05-16 17:27:51 -05:00
Åke Forslund 6186afd25f Remove the mimic_fallback_obj at shutdown 2019-03-28 11:15:45 +01:00
Ruthvicp ba305c5bfc separate the cache & avoid voice overlap
- The cache is now stored in a TTS specific directory
- Only a single fallback-tts is created
2019-03-28 10:40:02 +01:00
Ruthvicp d3015ca7e8 Pause at semicolon (#1989)
Split at semicolon and speak each chunk of data, similar to a period.
2019-02-15 02:54:42 -06:00
Åke 0ae66c3f93 Bugfix/speech stop (#1961)
* Refactor mimic2 to use the shared tts architecture

* Make sure the queue is cleared

- Add a convenience method grouping clear_queue and clear_visemes
- The start time is now set before the lock to allow multiple speech requests queued before the stop signal to also be cancelled
- Make sure the any pending TTS generation is cleared from the queue by calling tts.clear() when breaking from the chunking loop.
2019-01-31 01:30:53 -06:00
Michael Nguyen b22e9d975d fall back tts function for connection errors 2018-10-08 16:54:22 -05:00
Åke 64476eb143 Replace emitter/ws with bus (#1757)
Makes the code a bit more understandable
2018-08-21 20:50:50 -05:00
Åke 14349cfb25 Remove stray lock.release() (#1680)
This fixes a stray lock.release() causing a silent

RuntimeError: release unlocked lock

after TTS execution but just before reporting the timing for the TTS system.
2018-07-10 12:28:45 -05:00
Steve Penrod 17aab53fae Enhance the behavior of the Mark 1 button (#1668)
The Mark 1 button press can now be "consumed" when a skill handles
the Stop command.  When this happens, the button press will not
trigger listening mode.  An additional press would be needed to
trigger listening.

This introduces the "mycroft.stop.handled" messagebus message.  It
carries a data field called "by" which identifies who handled it.
Currently the values are "TTS" for when speaking ends or the name
of a skill which implements Stop and returns True from the call.

Also fixed a potential bug when the flag to clear queued visemes
was left set after a button press.
2018-07-05 20:56:54 +02:00
Matthew D. Scholefield ac26131b71 Fix SSML when tag spans multiple sentences
Now, sentence splitting is disabled if the utterance contains any xml tags
2018-04-18 14:45:09 -05:00
Matthew D. Scholefield cbf73d4b30 SSML Changes
- Engines now specify if they support ssml rather than the configuration
 - The text client strips out ssml tags
 - Engines can modify tags via the `self.modify_tag` method
2018-04-18 14:45:09 -05:00
Jarbas 7c6af2017c add SSML support 2018-04-18 14:45:09 -05:00
Matthew D. Scholefield 10bd9a1cf3 Change initial kill to SIGINT
This sends a ctrl+c signal to each process which will allow code to exit properly by handling KeyboardInterrupt
Other notable changes:
 - create_daemon method used to clean up create daemon threads
 - create_echo_function used to reduce code duplication with messagebus
 echo functions
 - wait_for_exit_signal used to wait for ctrl+c (SIGINT)
 - reset_sigint_handler used to ensure SIGINT will raise KeyboardInterrupt
2018-04-11 21:29:10 -05:00
Åke f0e695bbc4 Feature/metrics classes (#1393)
* Report type of TTS when reporting tts metrics

* Report type of STT when reporting stt metrics
2018-02-01 02:35:27 -06:00
Åke Forslund 936bd54180 Add a function to build the standard timing report 2018-01-08 18:01:03 -06:00
Åke Forslund c1d3342fc6 Add playback timing reports in playback thread
This covers the default case with mimic and in the future more as they
are moved over to using the playback thread
2018-01-08 18:01:03 -06:00
Åke Forslund fe3b85c755 Add tts into the flow by digging throug the stack
The speak method digs through the stack trying to find a Message object
and if found uses the context from that message when sending the data to
the speech subsystem.
2018-01-08 18:01:03 -06:00
Åke Forslund baa15b98aa Send timing metrics for various subsystems
====  Tech Notes ====
STT, intent handling, intent fallbacks, skill handlers are now timed and
tied together with a ident (consistent through the chain so the flow from
STT until completion of the skill handler can be follewed.

TTS execution time is also measured, right now this is not tied into the
ident due to the nature of the speech.

The report is always called "timing" and always contain the following
fields:

- id: Identifier grouping the metrics into interactions
- system: Which part (STT, intent service, skill handler, etc)
- start_time: timestamp for when the action started
- time: how long it took to execute the action

The different system adds their own specific information, for example
the intent_service adds the intent_type, i.e. which handler was matched.

==== Protocol Notes ====
mycroft.skills.loaded is sent togheter with skill id and skill name
whenever a skill is loaded. This is used in the intent_service to
convert from id to skill name when reporting
2018-01-08 18:01:03 -06:00
Åke Forslund 41f8c1dcae Move comment regarding to isSpeaking to tts 2017-12-07 15:56:10 -06:00
Åke Forslund d3ecb20e0c Fix bare except, as pointed out by pep8 bot 2017-12-07 15:56:10 -06:00
Åke Forslund 9ed40010fa Fix lock around speech.
the lock could be taken by a waiting thread between sentences in a multi-sentenced utterance. This locking method will allow the entire utterance to be synthezised before handling next.
2017-12-07 15:56:10 -06:00
penrods 6463b9a92d Add 'mycroft.mic.listen' messagebus command
Add support for 'mycroft.mic.listen' on the messagebus to trigger the system
to listen for STT processing.  This can be posted on the messagebus by outside
systems, such as a physical or GUI Listen button.
2017-11-21 22:45:12 -06:00
Åke Forslund 3e878bd59f Replace ConfigurationManger with Configuration 2017-10-26 19:02:32 -04:00
Åke Forslund 45af24db54 Only stop speech is there's any
==== Fixed Issues ====
If stop speech happened while no speaking was happening the following
utterance was lost.
2017-10-26 18:48:47 -04:00