I believe he means his mic and sound are not working.
Does freebsd uses pulseaudio?
I believe he means his mic and sound are not working.
Does freebsd uses pulseaudio?
Sound in general works, Mycroft plays music. But he does not speak, and does not listen to commands.
Where to look? In /var/spool/log/audio.log?
Or any config docs?
Hey there @Guru, a few thoughts;
Logs should be at /var/log/mycroft
on your system. The key logs here would be;
voice.log
- this shows voice output or intended voice outputaudio.log
- this shows audio output, such as music or streamingIf Mycroft is not hearing commands, itâs likely that the microphone is not being recognised.
alsamixer
to see if your sources are selectedpulseaudio
If the CLI is accepting commands, but nothing is being spoken, then check the skills.log
for Python errors.
This definitely sounds like a microphone issue.
I got the voice input working:
18:04:21.919 - AlarmSkill - INFO - on ended...
18:04:21.911 - __main__:handle_record_end:40 - INFO - End Recording...
~~~~21.918 - mycroft.session:get:76 - INFO - New Session Start: 109a8642-67bd-4f18-a35f-942a499e08e6
18:04:21.922 - __main__:handle_wakeword:56 - INFO - Wakeword Detected: hey mycroft
18:04:24.163 - __main__:handle_utterance:61 - INFO - Utterance: ['how is the weather in berlin']
^--- NEWEST ---^
History ======================================== Log Output Legend ================ Mic Level ===
how is the weather in berlin DEBUG output
>> temperature, 37 °F (wind chill: 34 °F), skills.log, other
conditions, cloudy, relative humidity, 93% voice.log
(dew point: 36 °F), wind speed, 5 mph, (44
minutes ago)
--- 177.91
126 *
Input (':' for command, Ctrl+C to quit) ============================================= *
> *
Will look for the voice of Mycraft.
In voice.log we have:
18:04:24.163 - __main__:handle_utterance:61 - INFO - Utterance: ['how is the weather in berlin']
18:05:55.679 - mycroft.messagebus.client.ws:on_error:74 - WARNING - Could not send message because connection has closed
18:05:55.695 - mycroft.messagebus.client.ws:on_error:83 - ERROR - Exception closing websocket: Exception("Uncaught 'error' event.",)
18:05:55.698 - mycroft.messagebus.client.ws:on_error:85 - WARNING - WS Client will reconnect in 5 seconds.
18:06:00.705 - mycroft.messagebus.client.ws:on_error:76 - ERROR - === ConnectionRefusedError(61, 'Connection refused') ===
Hi @Guru - those lines in the log indicate that the Mycroft services have shut down after the how is the weather
utterance. This might happen if there is an error in the Skill.
What log lines are there in the skill.log
file for around the same timestamp? Are there any Python errors or anything that would explain Mycroft shutting down?
In skill.log for this action we have:
18:04:22.019 - SKILLS - DEBUG - {"context": null, "type": "recognizer_loop:wakeword", "data": {"session": "109a8642-67bd-4f18-a35f-942a499e08e6", "utterance": "hey mycroft"}}
18:04:24.169 - SKILLS - DEBUG - {"context": {"ident": "1542992661.92340141497061289956319986", "client_name": "mycroft_listener"}, "type": "recognizer_loop:utterance", "data": {"session": "109a8642-67bd-4f18-a35f-942a499e08e6", "utterances": ["how is the weather in berlin"], "lang": "en-US"}}
18:04:24.209 - SKILLS - DEBUG - {"type": "intent_failure", "data": {"utterance": "how is the weather in berlin", "lang": "en-US"}, "context": {"client_name": "mycroft_listener", "ident": "1542992661.92340141497061289956319986"}}
18:04:24.213 - SKILLS - DEBUG - {"type": "mycroft.skill.handler.start", "data": {"handler": "fallback"}, "context": {"client_name": "mycroft_listener", "ident": "1542992661.92340141497061289956319986"}}
18:04:24.215 - mycroft.skills.padatious_service:handle_fallback:133 - DEBUG - Padatious fallback attempt: how is the weather in berlin
18:04:24.228 - WolframAlphaSkill - DEBUG - WolframAlpha fallback attempt: how is the weather in berlin
18:04:24.229 - WolframAlphaSkill - DEBUG - Querying WolframAlpha: how is the weather in berlin
18:04:24.239 - urllib3.connectionpool - DEBUG - Starting new HTTPS connection (1): api.mycroft.ai:443
18:04:24.256 - SKILLS - DEBUG - {"type": "enclosure.mouth.think", "data": {}, "context": null}
18:04:30.212 - SKILLS - DEBUG - {"type": "mycroft-date-time.mycroftai:TimeSkillupdate_display", "data": {}, "context": null}
18:04:33.325 - urllib3.connectionpool - DEBUG - https://api.mycroft.ai:443 "GET /v1/wa?input=how+is+the+weather+in+berlin HTTP/1.1" 200 13594
18:04:33.482 - SKILLS - DEBUG - {"type": "speak", "data": {"utterance": "temperature, 37 \u00b0F (wind chill: 34 \u00b0F), conditions, cloudy, relative humidity, 93% (dew point: 36 \u00b0F), wind speed, 5 mph, (44 minutes ago)", "expect_response": false}, "context": {"client_name": "mycroft_listener", "ident": "1542992661.92340141497061289956319986"}}
18:04:33.584 - SKILLS - DEBUG - {"type": "mycroft.skill.handler.complete", "data": {"handler": "fallback", "fallback_handler": "WolframAlphaSkill.handle_fallback"}, "context": {"client_name": "mycroft_listener", "ident": "1542992661.92340141497061289956319986"}}
18:04:35.236 - SKILLS - DEBUG - {"type": "mycroft-reminder.mycroftai:reminder", "data": {}, "context": null}
18:04:38.357 - SKILLS - DEBUG - {"type": "enclosure.eyes.blink", "data": {"side": "b"}, "context": null}
18:04:38.451 - SKILLS - DEBUG - {"type": "recognizer_loop:audio_output_start", "data": {}, "context": null}
18:04:40.271 - SKILLS - DEBUG - {"type": "mycroft-date-time.mycroftai:TimeSkillupdate_display", "data": {}, "context": null}
18:04:45.211 - SKILLS - DEBUG - {"type": "recognizer_loop:audio_output_end", "data": {}, "context": null}
18:04:45.212 - SKILLS - DEBUG - {"type": "enclosure.eyes.blink", "data": {"side": "b"}, "context": null}
18:04:50.331 - SKILLS - DEBUG - {"type": "mycroft-date-time.mycroftai:TimeSkillupdate_display", "data": {}, "context": null}
18:04:51.808 - urllib3.connectionpool - DEBUG - Starting new HTTPS connection (1): api.mycroft.ai:443
18:04:52.565 - urllib3.connectionpool - DEBUG - https://api.mycroft.ai:443 "GET /v1/device/e7a4c241-70e1-44c2-8203-0667894036e4/skill HTTP/1.1" 304 0
18:04:54.109 - urllib3.connectionpool - DEBUG - Starting new HTTPS connection (1): api.mycroft.ai:443
18:04:54.926 - urllib3.connectionpool - DEBUG - https://api.mycroft.ai:443 "GET /v1/device/e7a4c241-70e1-44c2-8203-0667894036e4/skill HTTP/1.1" 304 0
thanks @guru - all of those log file entries look fine - itâs what I would expect to see if a Weather request was made. That is, there are no error messages showing.
The only thing I can think of is that one of the Mycroft services is sending an illegal command and the operating system is terminating the process.
Is there anything in dmesg
about Mycroft? Iâm assuming that FreeBSD syslogs to dmesg
- I could be wrong.
I did a fresh test. On start of the cli
(at 19:58:59) before any request to Mycroft we have some line in audio.log which are perhaps related to our problem:
19:59:04.070 - __main__:main:38 - INFO - Starting Audio Services
19:59:04.082 - mycroft.messagebus.client.ws:on_open:62 - INFO - Connected
19:59:04.098 - mycroft.audio.audioservice:get_services:58 - INFO - Loading services from /usr/home/guru/Mycroft-test/mycroft-core/mycroft/audio/services/
19:59:04.107 - mycroft.audio.audioservice:load_services:102 - INFO - Loading chromecast
19:59:09.969 - mycroft.audio.audioservice:load_services:102 - INFO - Loading mopidy
19:59:09.980 - mycroft.audio.audioservice:load_services:102 - INFO - Loading mplayer
19:59:10.091 - mplayer__init__:<module>:20 - ERROR - install py_mplayer with pip install git+https://github.com/JarbasAl/py_mplayer
19:59:10.094 - mycroft.audio.audioservice:load_services:108 - ERROR - Failed to import module mplayer
ImportError("No module named 'Queue'",)
19:59:10.097 - mycroft.audio.audioservice:load_services:102 - INFO - Loading simple
19:59:10.127 - mycroft.audio.audioservice:load_services:102 - INFO - Loading vlc
19:59:10.141 - mycroft.audio.audioservice:load_services:108 - ERROR - Failed to import module vlc
NotImplementedError('/usr/home/guru/Mycroft-test/mycroft-core/mycroft/audio/__main__.py: freebsd12 not supported',)
19:59:10.145 - mycroft.audio.audioservice:load_services_callback:170 - INFO - Finding default backend...
19:59:10.147 - mycroft.audio.audioservice:load_services_callback:174 - INFO - Found local
at 19:59:57.076, when the voice utterance about the weather should be answered, we see in audio.log:
19:59:57.076 - urllib3.connectionpool - DEBUG - Starting new HTTPS connection (1): api.mycroft.ai:443
19:59:57.076 - urllib3.connectionpool - DEBUG - Starting new HTTPS connection (1): api.mycroft.ai:443
19:59:57.727 - urllib3.connectionpool - DEBUG - https://api.mycroft.ai:443 "GET /v1/device/e7a4c241-70e1-44c2-8203-0667894036e4/subscription HTTP/1.1" 200 114
19:59:57.727 - urllib3.connectionpool - DEBUG - https://api.mycroft.ai:443 "GET /v1/device/e7a4c241-70e1-44c2-8203-0667894036e4/subscription HTTP/1.1" 200 114
Carnegie Mellon University, Copyright (c) 1999-2011, all rights reserved
mimic developers, Copyright (c) 2016, all rights reserved
version: mimic-1.2.0.2 ()
19:59:57.879 - mycroft.audio.speech:mute_and_speak:119 - INFO - Speak: temperature, 37 °F (wind chill: 33 °F), conditions, cloudy, relative humidity, 70% (dew point: 28 °F), wind speed, 6 mph, (40 minutes ago)
Path in link /home/guru/.config/pulse/41807f6b8965d38bc4110b3a55be1713-runtime is not absolute.
W: [(null)] caps.c: Normally all extra capabilities would be dropped now, but that's impossible because PulseAudio was built without capabilities support.
Connection failure: Connection refused
pa_context_connect() failed: Connection refused
The only lines in /var/log/messages
after the start of the cli
are (and perhaps also related to the problem:)::
Nov 26 19:59:03 c720-r314251 kernel: feeder_init(0xfffff8001347a480) on feeder_matrix returned 22
Nov 26 19:59:03 c720-r314251 kernel: pcm0: feeder_build_matrix(): can't add feeder_matrix
Nov 26 19:59:42 c720-r314251 pulseaudio[2819]: [(null)] core-util.c: Path in link /home/guru/.config/pulse/41807f6b8965d38bc4110b3a55be1713-runtime is not absolute.
Nov 26 19:59:42 c720-r314251 pulseaudio[2817]: [(null)] main.c: Daemon startup failed.
So, this line is happening when vlc
is imported. mplayer
isnât loading either because the Queues
module is not loading - these are both used for playback, which is why playback is not occurring.
Is there any possibility you can upgrade to a newer version of FreeBSD?
I was thinking that the no speech problem is caused by the not working pulseaudio daemon⌠In any case,
I will try to update to a newer version after Christmas. Iâm on vacation from the beginning of next week in any case.
Thanks for all your support.
Youâre very welcome - the no speech could be caused by the not working Pulseaudio daemon - which in turn is throwing this error
Hope you have a lovely vacation!
The pulseaudio is not starting at all (itâs crashing), also outside of Mycroft, see here:
https://lists.freebsd.org/pipermail/freebsd-questions/2018-November/283436.html
Hmmm Sounds like this is more an issue of PulseAudio on FreeBSD rather than a Mycroft issue.
Of course, this is within FreeBSD (or the used ported software).
I have now updated my FreeBSD box to the bleeding edge (all from December 23, kernel and ports) and recompiled everything of Mycroft. Now cli
is unwilling to start, it gives:
...
Starting cli
Traceback (most recent call last):
File "/usr/local/lib/python3.6/runpy.py", line 183, in _run_module_as_main
mod_name, mod_spec, code = _get_module_details(mod_name, _Error)
File "/usr/local/lib/python3.6/runpy.py", line 109, in _get_module_details
__import__(pkg_name)
File "/usr/home/guru/Mycroft-test/mycroft-core/mycroft/__init__.py", line 17, in <module>
from mycroft.api import Api
File "/usr/home/guru/Mycroft-test/mycroft-core/mycroft/api/__init__.py", line 23, in <module>
from mycroft.configuration import Configuration
File "/usr/home/guru/Mycroft-test/mycroft-core/mycroft/configuration/__init__.py", line 15, in <module>
from .config import Configuration, LocalConf, RemoteConf
File "/usr/home/guru/Mycroft-test/mycroft-core/mycroft/configuration/config.py", line 23, in <module>
from mycroft.util.json_helper import load_commented_json, merge_dict
File "/usr/home/guru/Mycroft-test/mycroft-core/mycroft/util/__init__.py", line 39, in <module>
from mycroft.util.parse import extract_datetime, extract_number, normalize
File "/usr/home/guru/Mycroft-test/mycroft-core/mycroft/util/parse.py", line 18, in <module>
from mycroft.util.time import now_local
File "/usr/home/guru/Mycroft-test/mycroft-core/mycroft/util/time.py", line 18, in <module>
from dateutil.tz import gettz, tzlocal
ModuleNotFoundError: No module named 'dateutil'
The followin py36 ports are installed:
root@c720-r342378:/usr/PKGDIR.20181223 # python3 --version
Python 3.6.7
root@c720-r342378:/usr/PKGDIR.20181223 # pkg info | grep py36
py36-cairo-1.14.1 Python 2 bindings for Cairo
py36-dateutil-2.7.3 Extensions to the standard Python datetime module
py36-dateutils-0.6.6_1 Various utilities for working with date and datetime objects
py36-gobject3-3.28.3 Common files for the Python bindings for GObject
py36-pytz-2018.7,1 World Timezone Definitions for Python
py36-setuptools-40.6.2 Python packages installer
py36-six-1.12.0 Python 2 and 3 compatibility utilities
What is missing?
Is this using a venv? If so is that the results from the venv?
I sourced before starting . ./venv-activate.sh
. Is this your question? If not, please clarify.
yesâŚthough itâs not showing the (venv) bit Iâd usually expect to see there. If, as the mycroft user, you run python3, then do âimport dateutilâ, does that error out?
$ python3
Python 3.6.7 (default, Dec 24 2018, 12:25:59)
[GCC 4.2.1 Compatible FreeBSD Clang 7.0.1 (tags/RELEASE_701/final 349250)] on freebsd13
Type "help", "copyright", "credits" or "license" for more information.
>>> import dateutil
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'dateutil'
I mean, thatâs pretty straightforward then. It canât load that module, but not clear why. Try pip3 install dateutil
(might be python-dateutil) as the mycroft user in the venv?