Changing language - Hindi

Hi All,

I have been trying to use Google STT and TTS and changing default language. I had modified /home/mycroft/.mycroft/mycroft.conf and /etc/mycroft/mycroft.conf as per the guidelines. But the language change does not get reflected. I was trying to use “hi-in” as language. I also translated skills for weather under the following

dialog/en-us/speak.dialog
vocab/en-us/sentence.intent
vocab/en-us/keyword.voc
regex/en-us/regex.rx

and place it under a new folder “hi-in”. I’m not sure where I’m going wrong. Can some one help to debug the issue. I could also see the voice used is “Google” but the speech content was in English.

Here is the mycroft.conf content.

{
“stt”: {
“module”: “google_cloud”,
“google_cloud”: {
“lang”: “hi-in”,
“credential”: {
“json”: {

            }
          }
}

},
“tts”: {
“module”: “google”,
“google”: {
“lang” : “hi-in”
}
}
}

I had removed credential content in json value.

Thanks in Advance,
Madhukar

According to Google’s supported voices list the language code “hi-in” is not supported yet.

EDIT: found another list here with more supported languages - maybe you have to use “hi-IN” instead of “hi-in”?

Thanks for flagging this @madhukar, and namaste.

Firstly, I want to advise that our support for languages other than English at the moment is very experimental. Some of our Community members have got some part of language support working, but please be aware it is very experimental.

There are a couple of things you might want to try here;

  • As @Dominik said, hi-in may not yet be supported by Google, so that’s worth checking
  • for the lang setting, try just hi instead of hi-in. It’s also worth trying hi-IN as @Dominik suggested.
  • In the STT settings, module should have the value google, not google_cloud.

Let us know how you go.

Thanks for the suggestion.

I had already tried with both hi-in and hi-IN with no luck and even “hi” also does not work. When I changed module value to “google”, i get a message “I’m having trouble communicating with the mycroft servers…” when I say something.

Couple of questions:

  1. Would it be enough if I modify only the mycroft.conf file present in /home/mycroft/.mycroft/mycroft.conf?
  2. Currently, I’m using wake up word as default “hey mycroft” and also as said earlier I currently provided only “Weather” skill in “hi-in” language. I’m also using the utterance word also in english. For weather, I’m using “What is the weather like”. Does any of these need to be in hi-in language.
  3. Can someone provide a language name other than english that will work by using google STT and TTS. In this way I can confirm that there is not issue in configuration.

Regards,
Madhukar

Good approach @madhukar.

  1. Yes, you should only need to modify the mycroft.conf file in /home/mycroft/.mycroft/mycroft.conf. The mycroft.conf implements an order of precedence, however this doesn’t matter on a Linux Github installation because there is no mycroft.conf in /etc/mycroft on a Github install.

  2. Good question. The Wake Word - Hey Mycroft - is separate to the STT and TTS layers, and this should not need to be in Hindi for a Skill to work in Hindi. But yes, to have STT and TTS output for a Skill, the Skill needs to have .voc and dialog files in the target language.
    Are you able to provide the .voc and dialog files that are in Hindi. One of the questions I’m wondering is whether the STT engine at Google is outputting into Devanagari script, rather than Latin script used in English. Likewise, I wonder whether the TTS is expecting Devanagari input. I just don’t know, I’m sorry. A good test for this would be to write the dialog files in the hi-in directory in Devagari script to see what happens.
    We don’t have a lot of experience with languages that are written in non-Latin scripts. Some European languages have diacritical marks, and use an extended Latin set of characters, however we haven’t yet worked with Devanagari script, or any other scripts used in India such as Kannada, Malayalam or Telugu etc. So it’s a bit trial-and-error I’m afraid :wink:

  3. Yes, we have people using pt-br, de-de, fr-fr and it-it - they’re all European / Latin languages though…

Let’s keep trying with this, I really want to help you get it to work :thumbsup:

Sadhanyavaad, Kathy

Yes, I translated all the .voc and dialog files to Hindi and saved in each folder with name hi-in. The output is always in Latin. It’s not in Devanagari. Moreover, when I try to give the input in Devanagari, it is not able to detect the phrase and trying to display it in English only.

I will try other Latin languages and see how it behaves. Thanks for the input.

following configuration works for German:

  "tts": {
    "module": "google",
    "google" : {
      "lang": "de"
    },
  },
  "hotwords": {
    "hey mycroft": {
      "module": "precise"
    }
  },
  "lang": "de-de",

In addition I have set “Text-to-Speech Engine” in Advanced settings of home.mycroft.ai to “Google”.

1 Like

Thanks @Dominik When I had given the tts entry like you mentioned in mycroft.conf file I was able to make some progress.
“tts”: {
“module”: “google”,
“google” : {
“lang”: “hi”
},
},
“lang”: “hi-in”

The /var/log/ shows that current language is hi-in. There are few observations.

  1. When I had given the input in English, the log shows

“data”: {“lang”: “hi-IN”, “utterance”: “\u092e\u094b\u0926\u0940 \u0915\u0947 \u092d\u091c\u0928”}, “type”: “intent_failure”}
mycroft.client.speech.main:handle_complete_intent_failure:81 - INFO - Failed to find intent.

The output it not.loaded

  1. When I had given the input in Hindi, the log shows

{“data”: [["\u092e\u094c\u0938\u092e", “skill_weatherWeather”]], “key”: “\u092e\u094c\u0938\u092e”, “match”: “\u092e\u094c\u0938\u092e”, “confidence”: 1.0}]}], “utterance”: “\u0906\u091c \u0915\u093e \u092e\u094c\u0938\u092e”, “skill_weatherWeather”: “\u092e\u094c\u0938\u092e”, “confidence”: 1.0}, “type”: “skill-weather:handle_current_weather”}

skill-weather:handle_current_weather:187-ERROR - Error: too many values to unpack (expected 2)

There is no output.

I would like to inform that I translated only few files in dialog and vocab to Hindi and place in hi-in folder in each of them (dialog, vocab and regex).

Do I need to make any other changes to get it working?
Do I need to take care of encoding as the utterance font displayed on screen is square boxes?

Kindly suggest.

Regards,
Madhukar

It is recording the Utterance in Devanagari script - those characters are unicode for Devanagari. Please try writing the .voc files in Devanagari script :slight_smile:

.voc files are already in Devanagari script. Here is the sample

मौसम
तापमान
कितना ठंडा
कितना ठंडा
कितना अच्छा
कितना गर्म
कितना गर्म

regarding error 2.:
I guess the weather skill fails to make a call to mycroft.util.parse.extract_datetime. Currently this does not have an implementation for Hindi and returns a data chunk in an format not exspected by weather skill. You may want to create format_hi.py in mycroft-core/mycroft/util/ (and add reference for it in /mycroft-core/blob/dev/mycroft/util/parse.py)

OK that is very useful.

First, I want to make sure the Utterance matches the .voc:

Utterance - \u092e\u094b\u0926\u0940 \u0915\u0947 \u092d\u091c\u0928
This translates to मौसम in Devanagari (“mausam” I think?), so that should match the Intent.

Next in the execution of the code is mycroft.util.parse.extract_datetime. This does not have an entry for hi-IN Hindi and returns data that is not in the format the Weather Skill is expecting.

Recommended action: I think a file called format_hi.py and parse_hi.py are required in mycroft-core. This is a big task though.

I’m currently working on creating format_hi.py and parse_hi.py. I will update once I start testing them.

I see other language files are present in /opt/venvs/mycroft-core/lib/python3.4/site-packages/mycroft/util.

Thanks and Regards,
Madhukar

Hi All,

I had added format_hi.py and parse_hi.py to the folder (/opt/venvs/mycroft-core/lib/python3.4/site-packages/mycroft/util/lang) and also updated parse.py in /opt/venvs/mycroft-core/lib/python3.4/site-packages/mycroft/util.

  1. When I give the input in Hindi (मौसम) there is no output. However, there is an error

skill-weather:handle_current_weather:187 - ERROR: ‘NoneType’ object is not iterable

  1. When I give the input in English (“What is the weather”), the initial error was “Failed to find intent.” and the output was not.loaded. So I added a new folder in /opt/venvs/mycroft-core/lib/python3.4/site-packages/mycroft/res/text/hi-in/not.loaded.dialog. The content of this file was in Hindi. After reboot, I again gave the input as “What is the weather”. The error was still “Failed to find intent”, and tts output was in Hindi (Whatever the text was given in not.loaded.dialog)

I believe the input should be in Hindi as in #1, but how can I clear that error. Do I need to make more changes or add to the files in intent folder of skill-weather/test/ or any of the other files. Kindly suggest.

Regards,
Madhukar

Namaste, @madhukar. Firstly a huge thanks for all the work you have done so far in getting to Hindi to work on Mycroft! धन्यवाद :slight_smile:

  1. ERROR: ‘NoneType’ object is not iterable
    This means that the object passed to handle_current_weather() function on line 187 is empty. What code returns the object that is passed to this function? From memory, when the Weather Skill was translated into German there was a lot of work that had to happen to convert the values returned from Weather Skill into German, and I think this will need to happen with Hindi as well.

Do you have your code in a public GitHub repository as this will make it a lot easier to assist?

  1. Failed to find intent

Can you please upload your mycroft-skills.log / skills.log - this should be in /var/log/mycroft/skills.log or /var/log/mycroft-skills.log. This log will help to understand how the Intent is being interpreted.

Best, Kathy

The code is not in Git and I’m yet to figure out why handle_current_weather() is failing.

I was not able to upload the log file (mycroft-skills.log). So I’m pasting the content here.

11:41:52.814 - mycroft.skills.padatious_service:train:72 - INFO - Training… (single_thread=False)
11:41:53.048 - mycroft.skills.padatious_service:train:74 - INFO - Training complete.
11:42:00.136 - SKILLS - DEBUG - {“context”: null, “data”: {}, “type”: “mycroft-date-time.mycroftai:TimeSkillupdate_display”}
11:42:04.602 - mycroft.skills.settings:_request_my_settings:493 - DEBUG - getting skill settings from server for mycroftNews
11:42:04.616 - urllib3.connectionpool - DEBUG - Starting new HTTPS connection (1): api.mycroft.ai:443
11:42:06.341 - urllib3.connectionpool - DEBUG - https://api.mycroft.ai:443 “GET /v1/device/75e5f8ce-4888-467d-b6d7-06920e23adf9/skill HTTP/1.1” 304 0
11:42:06.371 - mycroft.api:send:111 - DEBUG - Etag matched. Nothing changed for: device/75e5f8ce-4888-467d-b6d7-06920e23adf9/skill
11:42:10.148 - mycroft.skills.settings:_request_my_settings:493 - DEBUG - getting skill settings from server for SkillInstallerSkill
11:42:10.167 - SKILLS - DEBUG - {“context”: null, “data”: {}, “type”: “mycroft-date-time.mycroftai:TimeSkillupdate_display”}
11:42:10.175 - urllib3.connectionpool - DEBUG - Starting new HTTPS connection (1): api.mycroft.ai:443
11:42:11.908 - urllib3.connectionpool - DEBUG - https://api.mycroft.ai:443 “GET /v1/device/75e5f8ce-4888-467d-b6d7-06920e23adf9/skill HTTP/1.1” 304 0
11:42:11.933 - mycroft.api:send:111 - DEBUG - Etag matched. Nothing changed for: device/75e5f8ce-4888-467d-b6d7-06920e23adf9/skill
11:42:15.048 - SKILLS - DEBUG - {“type”: “recognizer_loop:record_begin”, “data”: {}, “context”: null}
11:42:16.163 - SKILLS - DEBUG - {“context”: null, “data”: “UpdateRemote”, “type”: “mycroft-configuration.mycroftai:ConfigurationSkillupdate_remote”}
11:42:16.180 - urllib3.connectionpool - DEBUG - Starting new HTTPS connection (1): api.mycroft.ai:443
11:42:16.531 - mycroft.skills.settings:_request_my_settings:493 - DEBUG - getting skill settings from server for AimlFallback
11:42:16.542 - urllib3.connectionpool - DEBUG - Starting new HTTPS connection (1): api.mycroft.ai:443
11:42:17.879 - urllib3.connectionpool - DEBUG - https://api.mycroft.ai:443 “GET /v1/device/75e5f8ce-4888-467d-b6d7-06920e23adf9/setting HTTP/1.1” 304 0
11:42:17.909 - mycroft.api:send:111 - DEBUG - Etag matched. Nothing changed for: device/75e5f8ce-4888-467d-b6d7-06920e23adf9/setting
11:42:17.922 - urllib3.connectionpool - DEBUG - Starting new HTTPS connection (1): api.mycroft.ai:443
11:42:18.300 - urllib3.connectionpool - DEBUG - https://api.mycroft.ai:443 “GET /v1/device/75e5f8ce-4888-467d-b6d7-06920e23adf9/skill HTTP/1.1” 304 0
11:42:18.327 - mycroft.api:send:111 - DEBUG - Etag matched. Nothing changed for: device/75e5f8ce-4888-467d-b6d7-06920e23adf9/skill
11:42:18.773 - SKILLS - DEBUG - {“type”: “recognizer_loop:record_end”, “data”: {}, “context”: null}
11:42:18.806 - SKILLS - DEBUG - {“type”: “recognizer_loop:wakeword”, “data”: {“utterance”: “hey mycroft”, “session”: “6ff37bff-94ab-4c66-a131-a5f0833b5f15”}, “context”: null}
11:42:19.599 - urllib3.connectionpool - DEBUG - https://api.mycroft.ai:443 “GET /v1/device/75e5f8ce-4888-467d-b6d7-06920e23adf9/location HTTP/1.1” 304 0
11:42:19.628 - mycroft.api:send:111 - DEBUG - Etag matched. Nothing changed for: device/75e5f8ce-4888-467d-b6d7-06920e23adf9/location
11:42:19.648 - ConfigurationSkill - INFO - Remote configuration updated
11:42:19.722 - SKILLS - DEBUG - {“context”: null, “data”: {“timeFormat”: “half”, “createdAt”: 1533558584115, “sttSettings”: [{“createdAt”: 1533558584140, “credential”: {“uuid”: “843fe0a3-41c6-414f-b1b5-21fb82d77249”, “updatedAt”: 1533720979610, “@type”: “token”, “createdAt”: 1533558584140}, “updatedAt”: 1533720979609, “uuid”: “c4c1f44e-1f4c-4df3-bcba-a1553e009c91”, “active”: false, “@type”: “google”}, {“createdAt”: 1533558584128, “credential”: {“uuid”: “4f3b617b-1a6e-4a0d-9edb-5ba24db10187”, “updatedAt”: 1533720979616, “@type”: “token”, “createdAt”: 1533558584128}, “updatedAt”: 1533720979615, “uuid”: “430b5217-4e4a-4683-84bb-3cd39947e449”, “active”: false, “@type”: “wit”}, {“createdAt”: 1533558584133, “credential”: {“uuid”: “23db0ad5-720b-40fa-a52e-5b61036ae5ce”, “updatedAt”: 1533720979621, “@type”: “basic”, “createdAt”: 1533558584133}, “updatedAt”: 1533720979620, “uuid”: “b4f8ccad-63e1-4c9a-ab02-1325f328be4b”, “active”: false, “@type”: “ibm”}, {“createdAt”: 1533558584119, “credential”: {“uuid”: “e470037f-aecf-4a7e-9e71-da284766e451”, “updatedAt”: 1533720979626, “@type”: “token”, “createdAt”: 1533558584119}, “updatedAt”: 1533720979625, “uuid”: “e22e709b-6022-403c-977c-e6f1ccca7db7”, “active”: false, “@type”: “openstt”}, {“createdAt”: 1533558584123, “credential”: {“uuid”: “950bceea-487b-44d5-8bfc-5d5c95c6652b”, “updatedAt”: 1533720979632, “@type”: “token”, “createdAt”: 1533558584123}, “updatedAt”: 1533720979631, “uuid”: “652109da-a7f1-4a94-903c-caf36352b26b”, “active”: true, “@type”: “mycroft”}], “systemUnit”: “imperial”, “updatedAt”: 1533720979606, “uuid”: “e791339a-48c6-4be5-b83e-6785d2d48ec1”, “dateFormat”: “MDY”, “enclosureSetting”: {“createdAt”: 1533558584159, “port”: “/dev/ttyAMA0”, “rate”: 9600, “uuid”: “62cfa0e1-abda-4c4e-9816-56b16f1bce6f”, “timeout”: 5.0, “updatedAt”: 1533720980188}, “ttsSettings”: [{“uuid”: “77cda678-64d5-4935-ba62-fcc2d84cf375”, “updatedAt”: 1533720979636, “active”: false, “@type”: “marytts”, “createdAt”: 1533558584145}, {“uuid”: “c7f16823-8119-436e-8668-a775a7123cef”, “updatedAt”: 1533720979638, “active”: false, “@type”: “fatts”, “createdAt”: 1533558584154}, {“uuid”: “33d6ca59-43af-4b61-b84e-6726c0503ad1”, “updatedAt”: 1533720979838, “active”: false, “@type”: “mimic2”, “createdAt”: 1533558584150}, {“createdAt”: 1533558584155, “voice”: “ap”, “updatedAt”: 1533720979842, “uuid”: “dc07a43c-8295-46e5-8fc3-ab891366a167”, “active”: false, “@type”: “mimic”}, {“uuid”: “31cbaaff-111e-4220-88f3-17724fb902dd”, “updatedAt”: 1533720979845, “active”: true, “@type”: “google”, “createdAt”: 1533558584152}, {“uuid”: “e664649d-9625-4765-b7f4-1a3f48711d83”, “updatedAt”: 1533720979848, “active”: false, “@type”: “espeak”, “createdAt”: 1533558584148}], “listenerSetting”: {“sampleRate”: 16000, “wakeWord”: “hey mycroft”, “multiplier”: 1.0, “threshold”: 1e-90, “channels”: 1, “updatedAt”: 1533720980185, “uuid”: “db6a12fa-b608-48f0-98d7-568a7bd2eca6”, “createdAt”: 1533558584158, “phonemes”: “HH EY . M AY K R AO F T”, “energyRatio”: 1.5}, “skillsSetting”: {“uuid”: “059247f6-b67d-480a-a5f9-d3fde7b50f31”, “updatedAt”: 1533720980181, “stopThreshold”: 2.0, “directory”: “~/.mycroft/skills”, “createdAt”: 1533558584156}, “user”: {“uuid”: “9b7cd73e-7bfe-4703-b128-4f6151647f8c”, “updatedAt”: 1533558584110, “unsubscriptionHistory”: [], “socialAccounts”: [], “createdAt”: 1533558584110}}, “type”: “configuration.updated”}
11:42:19.751 - mycroft.configuration.config:load_local:124 - DEBUG - Configuration /opt/venvs/mycroft-core/lib/python3.4/site-packages/mycroft/configuration/mycroft.conf loaded
11:42:19.768 - urllib3.connectionpool - DEBUG - Starting new HTTPS connection (1): api.mycroft.ai:443
11:42:20.177 - SKILLS - DEBUG - {“context”: null, “data”: {}, “type”: “mycroft-date-time.mycroftai:TimeSkillupdate_display”}
11:42:21.470 - urllib3.connectionpool - DEBUG - https://api.mycroft.ai:443 “GET /v1/device/75e5f8ce-4888-467d-b6d7-06920e23adf9/setting HTTP/1.1” 304 0
11:42:21.502 - mycroft.api:send:111 - DEBUG - Etag matched. Nothing changed for: device/75e5f8ce-4888-467d-b6d7-06920e23adf9/setting
11:42:21.516 - urllib3.connectionpool - DEBUG - Starting new HTTPS connection (1): api.mycroft.ai:443
11:42:22.461 - mycroft.skills.settings:_request_my_settings:493 - DEBUG - getting skill settings from server for TimeSkill
11:42:22.526 - urllib3.connectionpool - DEBUG - Starting new HTTPS connection (1): api.mycroft.ai:443
11:42:23.174 - urllib3.connectionpool - DEBUG - https://api.mycroft.ai:443 “GET /v1/device/75e5f8ce-4888-467d-b6d7-06920e23adf9/location HTTP/1.1” 304 0
11:42:23.211 - mycroft.api:send:111 - DEBUG - Etag matched. Nothing changed for: device/75e5f8ce-4888-467d-b6d7-06920e23adf9/location
11:42:23.238 - mycroft.configuration.config:load_local:124 - DEBUG - Configuration /etc/mycroft/mycroft.conf loaded
11:42:23.247 - mycroft.configuration.config:load_local:124 - DEBUG - Configuration /home/mycroft/.mycroft/mycroft.conf loaded
11:42:24.215 - urllib3.connectionpool - DEBUG - https://api.mycroft.ai:443 “GET /v1/device/75e5f8ce-4888-467d-b6d7-06920e23adf9/skill HTTP/1.1” 304 0
11:42:24.241 - mycroft.api:send:111 - DEBUG - Etag matched. Nothing changed for: device/75e5f8ce-4888-467d-b6d7-06920e23adf9/skill
11:42:25.475 - SKILLS - DEBUG - {“type”: “recognizer_loop:utterance”, “data”: {“utterances”: ["\u092e\u094c\u0938\u092e"], “lang”: “hi-IN”, “session”: “6ff37bff-94ab-4c66-a131-a5f0833b5f15”}, “context”: {“ident”: “1536147738.786564-2101897839”, “client_name”: “mycroft_listener”}}
11:42:25.545 - SKILLS - DEBUG - {“context”: {“ident”: “1536147738.786564-2101897839”, “target”: null, “client_name”: “mycroft_listener”}, “data”: {“tags”: [{“entities”: [{“match”: “\u092e\u094c\u0938\u092e”, “data”: [["\u092e\u094c\u0938\u092e", “skill_weatherWeather”]], “key”: “\u092e\u094c\u0938\u092e”, “confidence”: 1.0}], “end_token”: 0, “start_token”: 0, “from_context”: false, “match”: “\u092e\u094c\u0938\u092e”, “key”: “\u092e\u094c\u0938\u092e”}], “utterance”: “\u092e\u094c\u0938\u092e”, “skill_weatherWeather”: “\u092e\u094c\u0938\u092e”, “confidence”: 1.0, “target”: null, “intent_type”: “skill-weather:handle_current_weather”}, “type”: “skill-weather:handle_current_weather”}
11:42:25.586 - SKILLS - DEBUG - {“context”: {“ident”: “1536147738.786564-2101897839”, “target”: null, “client_name”: “mycroft_listener”}, “data”: {“name”: “WeatherSkill.handle_current_weather”}, “type”: “mycroft.skill.handler.start”}
11:42:25.617 - skill-weather:handle_current_weather:187 - ERROR - Error: ‘NoneType’ object is not iterable
11:42:25.642 - SKILLS - DEBUG - {“context”: {“ident”: “1536147738.786564-2101897839”, “target”: null, “client_name”: “mycroft_listener”}, “data”: {“name”: “WeatherSkill.handle_current_weather”}, “type”: “mycroft.skill.handler.complete”}
11:42:28.607 - mycroft.skills.settings:_request_my_settings:493 - DEBUG - getting skill settings from server for AlarmSkill
11:42:28.621 - urllib3.connectionpool - DEBUG - Starting new HTTPS connection (1): api.mycroft.ai:443
11:42:30.195 - SKILLS - DEBUG - {“context”: null, “data”: {}, “type”: “mycroft-date-time.mycroftai:TimeSkillupdate_display”}
11:42:30.314 - urllib3.connectionpool - DEBUG - https://api.mycroft.ai:443 “GET /v1/device/75e5f8ce-4888-467d-b6d7-06920e23adf9/skill HTTP/1.1” 304 0
11:42:30.344 - mycroft.api:send:111 - DEBUG - Etag matched. Nothing changed for: device/75e5f8ce-4888-467d-b6d7-06920e23adf9/skill
11:42:34.242 - mycroft.skills.settings:_request_my_settings:493 - DEBUG - getting skill settings from server for NewsSkill
11:42:34.254 - urllib3.connectionpool - DEBUG - Starting new HTTPS connection (1): api.mycroft.ai:443
11:42:35.268 - SKILLS - DEBUG - {“type”: “recognizer_loop:record_begin”, “data”: {}, “context”: null}
11:42:35.908 - urllib3.connectionpool - DEBUG - https://api.mycroft.ai:443 “GET /v1/device/75e5f8ce-4888-467d-b6d7-06920e23adf9/skill HTTP/1.1” 304 0
11:42:35.932 - mycroft.api:send:111 - DEBUG - Etag matched. Nothing changed for: device/75e5f8ce-4888-467d-b6d7-06920e23adf9/skill
11:42:38.545 - SKILLS - DEBUG - {“type”: “recognizer_loop:record_end”, “data”: {}, “context”: null}
11:42:38.565 - SKILLS - DEBUG - {“type”: “recognizer_loop:wakeword”, “data”: {“utterance”: “hey mycroft”, “session”: “6ff37bff-94ab-4c66-a131-a5f0833b5f15”}, “context”: null}
11:42:40.213 - SKILLS - DEBUG - {“context”: null, “data”: {}, “type”: “mycroft-date-time.mycroftai:TimeSkillupdate_display”}
11:42:40.610 - mycroft.skills.settings:_request_my_settings:493 - DEBUG - getting skill settings from server for WeatherSkill
11:42:40.622 - urllib3.connectionpool - DEBUG - Starting new HTTPS connection (1): api.mycroft.ai:443
11:42:42.291 - urllib3.connectionpool - DEBUG - https://api.mycroft.ai:443 “GET /v1/device/75e5f8ce-4888-467d-b6d7-06920e23adf9/skill HTTP/1.1” 304 0
11:42:42.319 - mycroft.api:send:111 - DEBUG - Etag matched. Nothing changed for: device/75e5f8ce-4888-467d-b6d7-06920e23adf9/skill
11:42:43.110 - SKILLS - DEBUG - {“type”: “recognizer_loop:utterance”, “data”: {“utterances”: ["\u0935\u094d\u0939\u093e\u091f \u0907\u091c \u0926 \u0935\u0947\u0926\u0930"], “lang”: “hi-IN”, “session”: “6ff37bff-94ab-4c66-a131-a5f0833b5f15”}, “context”: {“ident”: “1536147758.5375733-1366180691”, “client_name”: “mycroft_listener”}}
11:42:43.149 - SKILLS - DEBUG - {“context”: null, “data”: {“utterances”: ["\u0935\u094d\u0939\u093e\u091f \u0907\u091c \u0926 \u0935\u0947\u0926\u0930"], “skill_id”: “skill-weather”, “lang”: “hi-IN”}, “type”: “skill.converse.request”}
11:42:43.167 - SKILLS - DEBUG - {“context”: {}, “data”: {“result”: false, “skill_id”: “skill-weather”}, “type”: “skill.converse.response”}
11:42:43.252 - SKILLS - DEBUG - {“context”: {“ident”: “1536147758.5375733-1366180691”, “client_name”: “mycroft_listener”}, “data”: {“utterance”: “\u0935\u094d\u0939\u093e\u091f \u0907\u091c \u0926 \u0935\u0947\u0926\u0930”, “lang”: “hi-IN”}, “type”: “intent_failure”}
11:42:43.263 - mycroft.skills.padatious_service:handle_fallback:120 - DEBUG - Padatious fallback attempt: व्हाट इज द वेदर
11:42:43.266 - WolframAlphaSkill - DEBUG - WolframAlpha fallback attempt: व्हाट इज द वेदर
11:42:43.268 - WolframAlphaSkill - DEBUG - Non-question, ignoring: व्हाट इज द वेदर
11:42:43.281 - mycroft.skills.core:handler:1281 - ERROR - Exception in fallback.
Traceback (most recent call last):
File “/opt/venvs/mycroft-core/lib/python3.4/site-packages/mycroft/skills/core.py”, line 1272, in handler
if handler(message):
File “/opt/mycroft/skills/fallback-unknown.mycroftai/init.py”, line 40, in handle_fallback
for l in self.read_voc_lines(i):
File “/opt/mycroft/skills/fallback-unknown.mycroftai/init.py”, line 28, in read_voc_lines
with open(self.find_resource(name + ‘.voc’, ‘vocab’)) as f:
TypeError: invalid file: None
11:42:43.289 - SKILLS - DEBUG - {“context”: {“ident”: “1536147758.5375733-1366180691”, “client_name”: “mycroft_listener”}, “data”: {“handler”: “fallback”}, “type”: “mycroft.skill.handler.start”}
11:42:43.299 - mycroft.skills.core:handler:1285 - WARNING - No fallback could handle intent.
11:42:43.334 - SKILLS - DEBUG - {“context”: {“ident”: “1536147758.5375733-1366180691”, “client_name”: “mycroft_listener”}, “data”: {}, “type”: “complete_intent_failure”}
11:42:43.369 - SKILLS - DEBUG - {“context”: {“ident”: “1536147758.5375733-1366180691”, “client_name”: “mycroft_listener”}, “data”: {“handler”: “fallback”, “exception”: “No fallback could handle intent.”}, “type”: “mycroft.skill.handler.complete”}
11:42:43.466 - SKILLS - DEBUG - {“type”: “speak”, “data”: {“utterance”: “\u0915\u0943\u092a\u092f\u093e \u090f\u0915 \u092a\u0932 \u092a\u094d\u0930\u0924\u0940\u0915\u094d\u0937\u093e \u0915\u0930\u0947\u0902”}, “context”: null}
11:42:46.115 - SKILLS - DEBUG - {“context”: null, “data”: {“side”: “b”}, “type”: “enclosure.eyes.blink”}
11:42:46.129 - SKILLS - DEBUG - {“context”: null, “data”: {}, “type”: “recognizer_loop:audio_output_start”}
11:42:48.748 - SKILLS - DEBUG - {“context”: null, “data”: {}, “type”: “recognizer_loop:audio_output_end”}
11:42:49.819 - mycroft.skills.settings:_request_my_settings:493 - DEBUG - getting skill settings from server for mycroftAstro
11:42:49.832 - urllib3.connectionpool - DEBUG - Starting new HTTPS connection (1): api.mycroft.ai:443
11:42:50.231 - SKILLS - DEBUG - {“context”: null, “data”: {}, “type”: “mycroft-date-time.mycroftai:TimeSkillupdate_display”}
11:42:51.566 - urllib3.connectionpool - DEBUG - https://api.mycroft.ai:443 “GET /v1/device/75e5f8ce-4888-467d-b6d7-06920e23adf9/skill HTTP/1.1” 304 0
11:42:51.593 - mycroft.api:send:111 - DEBUG - Etag matched. Nothing changed for: device/75e5f8ce-4888-467d-b6d7-06920e23adf9/skill
11:43:00.251 - SKILLS - DEBUG - {“context”: null, “data”: {}, “type”: “mycroft-date-time.mycroftai:TimeSkillupdate_display”}
11:43:06.383 - mycroft.skills.settings:_request_my_settings:493 - DEBUG - getting skill settings from server for mycroftNews
11:43:06.395 - urllib3.connectionpool - DEBUG - Starting new HTTPS connection (1): api.mycroft.ai:443
11:43:08.060 - urllib3.connectionpool - DEBUG - https://api.mycroft.ai:443 “GET /v1/device/75e5f8ce-4888-467d-b6d7-06920e23adf9/skill HTTP/1.1” 304 0
11:43:08.085 - mycroft.api:send:111 - DEBUG - Etag matched. Nothing changed for: device/75e5f8ce-4888-467d-b6d7-06920e23adf9/skill
11:43:10.264 - SKILLS - DEBUG - {“context”: null, “data”: {}, “type”: “mycroft-date-time.mycroftai:TimeSkillupdate_display”}
11:43:11.947 - mycroft.skills.settings:_request_my_settings:493 - DEBUG - getting skill settings from server for SkillInstallerSkill
11:43:11.961 - urllib3.connectionpool - DEBUG - Starting new HTTPS connection (1): api.mycroft.ai:443
11:43:13.674 - urllib3.connectionpool - DEBUG - https://api.mycroft.ai:443 “GET /v1/device/75e5f8ce-4888-467d-b6d7-06920e23adf9/skill HTTP/1.1” 304 0
11:43:13.700 - mycroft.api:send:111 - DEBUG - Etag matched. Nothing changed for: device/75e5f8ce-4888-467d-b6d7-06920e23adf9/skill
11:43:16.277 - SKILLS - DEBUG - {“context”: null, “data”: “UpdateRemote”, “type”: “mycroft-configuration.mycroftai:ConfigurationSkillupdate_remote”}
11:43:16.294 - urllib3.connectionpool - DEBUG - Starting new HTTPS connection (1): api.mycroft.ai:443
11:43:18.303 - urllib3.connectionpool - DEBUG - https://api.mycroft.ai:443 “GET /v1/device/75e5f8ce-4888-467d-b6d7-06920e23adf9/setting HTTP/1.1” 304 0
11:43:18.332 - mycroft.api:send:111 - DEBUG - Etag matched. Nothing changed for: device/75e5f8ce-4888-467d-b6d7-06920e23adf9/setting
11:43:18.343 - mycroft.skills.settings:_request_my_settings:493 - DEBUG - getting skill settings from server for AimlFallback
11:43:18.355 - urllib3.connectionpool - DEBUG - Starting new HTTPS connection (1): api.mycroft.ai:443
11:43:18.366 - urllib3.connectionpool - DEBUG - Starting new HTTPS connection (1): api.mycroft.ai:443
11:43:20.287 - SKILLS - DEBUG - {“context”: null, “data”: {}, “type”: “mycroft-date-time.mycroftai:TimeSkillupdate_display”}
11:43:22.758 - urllib3.connectionpool - DEBUG - https://api.mycroft.ai:443 “GET /v1/device/75e5f8ce-4888-467d-b6d7-06920e23adf9/skill HTTP/1.1” 304 0
11:43:22.780 - urllib3.connectionpool - DEBUG - https://api.mycroft.ai:443 “GET /v1/device/75e5f8ce-4888-467d-b6d7-06920e23adf9/location HTTP/1.1” 304 0
11:43:22.810 - mycroft.api:send:111 - DEBUG - Etag matched. Nothing changed for: device/75e5f8ce-4888-467d-b6d7-06920e23adf9/skill
11:43:22.838 - mycroft.api:send:111 - DEBUG - Etag matched. Nothing changed for: device/75e5f8ce-4888-467d-b6d7-06920e23adf9/location
11:43:24.252 - mycroft.skills.settings:_request_my_settings:493 - DEBUG - getting skill settings from server for TimeSkill
11:43:24.264 - urllib3.connectionpool - DEBUG - Starting new HTTPS connection (1): api.mycroft.ai:443
11:43:26.038 - urllib3.connectionpool - DEBUG - https://api.mycroft.ai:443 “GET /v1/device/75e5f8ce-4888-467d-b6d7-06920e23adf9/skill HTTP/1.1” 304 0
11:43:26.065 - mycroft.api:send:111 - DEBUG - Etag matched. Nothing changed for: device/75e5f8ce-4888-467d-b6d7-06920e23adf9/skill
11:43:30.330 - SKILLS - DEBUG - {“context”: null, “data”: {}, “type”: “mycroft-date-time.mycroftai:TimeSkillupdate_display”}
11:43:30.357 - mycroft.skills.settings:_request_my_settings:493 - DEBUG - getting skill settings from server for AlarmSkill
11:43:30.369 - urllib3.connectionpool - DEBUG - Starting new HTTPS connection (1): api.mycroft.ai:443
11:43:32.092 - urllib3.connectionpool - DEBUG - https://api.mycroft.ai:443 “GET /v1/device/75e5f8ce-4888-467d-b6d7-06920e23adf9/skill HTTP/1.1” 304 0
11:43:32.119 - mycroft.api:send:111 - DEBUG - Etag matched. Nothing changed for: device/75e5f8ce-4888-467d-b6d7-06920e23adf9/skill
11:43:35.944 - mycroft.skills.settings:_request_my_settings:493 - DEBUG - getting skill settings from server for NewsSkill
11:43:35.955 - urllib3.connectionpool - DEBUG - Starting new HTTPS connection (1): api.mycroft.ai:443
11:43:37.725 - urllib3.connectionpool - DEBUG - https://api.mycroft.ai:443 “GET /v1/device/75e5f8ce-4888-467d-b6d7-06920e23adf9/skill HTTP/1.1” 304 0
11:43:37.749 - mycroft.api:send:111 - DEBUG - Etag matched. Nothing changed for: device/75e5f8ce-4888-467d-b6d7-06920e23adf9/skill
11:43:40.327 - SKILLS - DEBUG - {“context”: null, “data”: {}, “type”: “mycroft-date-time.mycroftai:TimeSkillupdate_display”}
11:43:42.332 - mycroft.skills.settings:_request_my_settings:493 - DEBUG - getting skill settings from server for WeatherSkill
11:43:42.343 - urllib3.connectionpool - DEBUG - Starting new HTTPS connection (1): api.mycroft.ai:443
11:43:44.026 - urllib3.connectionpool - DEBUG - https://api.mycroft.ai:443 “GET /v1/device/75e5f8ce-4888-467d-b6d7-06920e23adf9/skill HTTP/1.1” 304 0
11:43:44.051 - mycroft.api:send:111 - DEBUG - Etag matched. Nothing changed for: device/75e5f8ce-4888-467d-b6d7-06920e23adf9/skill
11:43:50.362 - SKILLS - DEBUG - {“context”: null, “data”: {}, “type”: “mycroft-date-time.mycroftai:TimeSkillupdate_display”}
11:43:51.606 - mycroft.skills.settings:_request_my_settings:493 - DEBUG - getting skill settings from server for mycroftAstro
11:43:51.617 - urllib3.connectionpool - DEBUG - Starting new HTTPS connection (1): api.mycroft.ai:443
11:43:53.338 - urllib3.connectionpool - DEBUG - https://api.mycroft.ai:443 “GET /v1/device/75e5f8ce-4888-467d-b6d7-06920e23adf9/skill HTTP/1.1” 304 0
11:43:53.367 - mycroft.api:send:111 - DEBUG - Etag matched. Nothing changed for: device/75e5f8ce-4888-467d-b6d7-06920e23adf9/skill
11:44:00.386 - SKILLS - DEBUG - {“context”: null, “data”: {}, “type”: “mycroft-date-time.mycroftai:TimeSkillupdate_display”}
11:44:08.097 - mycroft.skills.settings:_request_my_settings:493 - DEBUG - getting skill settings from server for mycroftNews
11:44:08.109 - urllib3.connectionpool - DEBUG - Starting new HTTPS connection (1): api.mycroft.ai:443
11:44:09.886 - urllib3.connectionpool - DEBUG - https://api.mycroft.ai:443 “GET /v1/device/75e5f8ce-4888-467d-b6d7-06920e23adf9/skill HTTP/1.1” 304 0
11:44:09.918 - mycroft.api:send:111 - DEBUG - Etag matched. Nothing changed for: device/75e5f8ce-4888-467d-b6d7-06920e23adf9/skill
11:44:10.407 - SKILLS - DEBUG - {“context”: null, “data”: {}, “type”: “mycroft-date-time.mycroftai:TimeSkillupdate_display”}
11:44:13.712 - mycroft.skills.settings:_request_my_settings:493 - DEBUG - getting skill settings from server for SkillInstallerSkill
11:44:13.724 - urllib3.connectionpool - DEBUG - Starting new HTTPS connection (1): api.mycroft.ai:443
11:44:15.425 - urllib3.connectionpool - DEBUG - https://api.mycroft.ai:443 “GET /v1/device/75e5f8ce-4888-467d-b6d7-06920e23adf9/skill HTTP/1.1” 304 0
11:44:15.449 - mycroft.api:send:111 - DEBUG - Etag matched. Nothing changed for: device/75e5f8ce-4888-467d-b6d7-06920e23adf9/skill
11:44:16.417 - SKILLS - DEBUG - {“context”: null, “data”: “UpdateRemote”, “type”: “mycroft-configuration.mycroftai:ConfigurationSkillupdate_remote”}
11:44:16.435 - urllib3.connectionpool - DEBUG - Starting new HTTPS connection (1): api.mycroft.ai:443
11:44:18.206 - urllib3.connectionpool - DEBUG - https://api.mycroft.ai:443 “GET /v1/device/75e5f8ce-4888-467d-b6d7-06920e23adf9/setting HTTP/1.1” 304 0
11:44:18.235 - mycroft.api:send:111 - DEBUG - Etag matched. Nothing changed for: device/75e5f8ce-4888-467d-b6d7-06920e23adf9/setting
11:44:18.249 - urllib3.connectionpool - DEBUG - Starting new HTTPS connection (1): api.mycroft.ai:443
11:44:20.108 - urllib3.connectionpool - DEBUG - https://api.mycroft.ai:443 “GET /v1/device/75e5f8ce-4888-467d-b6d7-06920e23adf9/location HTTP/1.1” 304 0
11:44:20.141 - mycroft.api:send:111 - DEBUG - Etag matched. Nothing changed for: device/75e5f8ce-4888-467d-b6d7-06920e23adf9/location
11:44:20.520 - SKILLS - DEBUG - {“context”: null, “data”: {}, “type”: “mycroft-date-time.mycroftai:TimeSkillupdate_display”}
11:44:22.839 - mycroft.skills.settings:_request_my_settings:493 - DEBUG - getting skill settings from server for AimlFallback
11:44:22.851 - urllib3.connectionpool - DEBUG - Starting new HTTPS connection (1): api.mycroft.ai:443
11:44:24.591 - urllib3.connectionpool - DEBUG - https://api.mycroft.ai:443 “GET /v1/device/75e5f8ce-4888-467d-b6d7-06920e23adf9/skill HTTP/1.1” 304 0
11:44:24.617 - mycroft.api:send:111 - DEBUG - Etag matched. Nothing changed for: device/75e5f8ce-4888-467d-b6d7-06920e23adf9/skill
11:44:26.077 - mycroft.skills.settings:_request_my_settings:493 - DEBUG - getting skill settings from server for TimeSkill
11:44:26.089 - urllib3.connectionpool - DEBUG - Starting new HTTPS connection (1): api.mycroft.ai:443
11:44:27.922 - urllib3.connectionpool - DEBUG - https://api.mycroft.ai:443 “GET /v1/device/75e5f8ce-4888-467d-b6d7-06920e23adf9/skill HTTP/1.1” 304 0
11:44:27.949 - mycroft.api:send:111 - DEBUG - Etag matched. Nothing changed for: device/75e5f8ce-4888-467d-b6d7-06920e23adf9/skill
11:44:30.444 - SKILLS - DEBUG - {“context”: null, “data”: {}, “type”: “mycroft-date-time.mycroftai:TimeSkillupdate_display”}
11:44:32.131 - mycroft.skills.settings:_request_my_settings:493 - DEBUG - getting skill settings from server for AlarmSkill
11:44:32.142 - urllib3.connectionpool - DEBUG - Starting new HTTPS connection (1): api.mycroft.ai:443
11:44:34.614 - urllib3.connectionpool - DEBUG - https://api.mycroft.ai:443 “GET /v1/device/75e5f8ce-4888-467d-b6d7-06920e23adf9/skill HTTP/1.1” 304 0
11:44:34.638 - mycroft.api:send:111 - DEBUG - Etag matched. Nothing changed for: device/75e5f8ce-4888-467d-b6d7-06920e23adf9/skill
11:44:37.763 - mycroft.skills.settings:_request_my_settings:493 - DEBUG - getting skill settings from server for NewsSkill
11:44:37.776 - urllib3.connectionpool - DEBUG - Starting new HTTPS connection (1): api.mycroft.ai:443
11:44:39.749 - urllib3.connectionpool - DEBUG - https://api.mycroft.ai:443 “GET /v1/device/75e5f8ce-4888-467d-b6d7-06920e23adf9/skill HTTP/1.1” 304 0
11:44:39.774 - mycroft.api:send:111 - DEBUG - Etag matched. Nothing changed for: device/75e5f8ce-4888-467d-b6d7-06920e23adf9/skill
11:44:40.465 - SKILLS - DEBUG - {“context”: null, “data”: {}, “type”: “mycroft-date-time.mycroftai:TimeSkillupdate_display”}
11:44:44.063 - mycroft.skills.settings:_request_my_settings:493 - DEBUG - getting skill settings from server for WeatherSkill
11:44:44.076 - urllib3.connectionpool - DEBUG - Starting new HTTPS connection (1): api.mycroft.ai:443
11:44:46.024 - urllib3.connectionpool - DEBUG - https://api.mycroft.ai:443 “GET /v1/device/75e5f8ce-4888-467d-b6d7-06920e23adf9/skill HTTP/1.1” 304 0
11:44:46.054 - mycroft.api:send:111 - DEBUG - Etag matched. Nothing changed for: device/75e5f8ce-4888-467d-b6d7-06920e23adf9/skill
11:44:50.483 - SKILLS - DEBUG - {“context”: null, “data”: {}, “type”: “mycroft-date-time.mycroftai:TimeSkillupdate_display”}
11:44:53.381 - mycroft.skills.settings:_request_my_settings:493 - DEBUG - getting skill settings from server for mycroftAstro
11:44:53.393 - urllib3.connectionpool - DEBUG - Starting new HTTPS connection (1): api.mycroft.ai:443
11:44:55.237 - urllib3.connectionpool - DEBUG - https://api.mycroft.ai:443 “GET /v1/device/75e5f8ce-4888-467d-b6d7-06920e23adf9/skill HTTP/1.1” 304 0
11:44:55.265 - mycroft.api:send:111 - DEBUG - Etag matched. Nothing changed for: device/75e5f8ce-4888-467d-b6d7-06920e23adf9/skill
11:45:00.501 - SKILLS - DEBUG - {“context”: null, “data”: {}, “type”: “mycroft-date-time.mycroftai:TimeSkillupdate_display”}
11:45:09.942 - mycroft.skills.settings:_request_my_settings:493 - DEBUG - getting skill settings from server for mycroftNews
11:45:09.953 - urllib3.connectionpool - DEBUG - Starting new HTTPS connection (1): api.mycroft.ai:443
11:45:10.520 - SKILLS - DEBUG - {“context”: null, “data”: {}, “type”: “mycroft-date-time.mycroftai:TimeSkillupdate_display”}
11:45:11.694 - urllib3.connectionpool - DEBUG - https://api.mycroft.ai:443 “GET /v1/device/75e5f8ce-4888-467d-b6d7-06920e23adf9/skill HTTP/1.1” 304 0
11:45:11.724 - mycroft.api:send:111 - DEBUG - Etag matched. Nothing changed for: device/75e5f8ce-4888-467d-b6d7-06920e23adf9/skill
11:45:15.461 - mycroft.skills.settings:_request_my_settings:493 - DEBUG - getting skill settings from server for SkillInstallerSkill
11:45:15.478 - urllib3.connectionpool - DEBUG - Starting new HTTPS connection (1): api.mycroft.ai:443
11:45:16.025 - SKILLS - DEBUG - {“context”: null, “data”: “UpdateRemote”, “type”: “mycroft-configuration.mycroftai:ConfigurationSkillupdate_remote”}
11:45:16.039 - urllib3.connectionpool - DEBUG - Starting new HTTPS connection (1): api.mycroft.ai:443
11:45:17.535 - urllib3.connectionpool - DEBUG - https://api.mycroft.ai:443 “GET /v1/device/75e5f8ce-4888-467d-b6d7-06920e23adf9/skill HTTP/1.1” 304 0
11:45:17.563 - mycroft.api:send:111 - DEBUG - Etag matched. Nothing changed for: device/75e5f8ce-4888-467d-b6d7-06920e23adf9/skill
11:45:17.986 - urllib3.connectionpool - DEBUG - https://api.mycroft.ai:443 “GET /v1/device/75e5f8ce-4888-467d-b6d7-06920e23adf9/setting HTTP/1.1” 304 0
11:45:18.015 - mycroft.api:send:111 - DEBUG - Etag matched. Nothing changed for: device/75e5f8ce-4888-467d-b6d7-06920e23adf9/setting

Hi Madhukar,
the actual error is here:

This means that the weather skill could not recognize the utterance “व्हाट इज द वेदर” (you should probably check your vocab-files) and no other skill was matched as well. In such cases the fallbacks are triggered as a last resort. The fallback-unknown skill is the last in the row and tries to reply but it can not find any vocab-files for language hi-IN.
Maybe you want to add vocab and dialog in Hindi for the fallback-unknown skill so that Mycroft can answer something like “I don’t know what that means”?

Yes, I agree.

I gave the input in two ways.

First input was “मौसम”. At this point there was not output but there was error in the log

“11:42:25.617 - skill-weather:handle_current_weather:187 - ERROR - Error: ‘NoneType’ object is not iterable”

Second I gave the input in English “What is the weather”. It got translated to “व्हाट इज द वेदर”. As you said there was *TypeError: invalid file: None. The output for this was “Please wait while the booting is complete” in Hindi which I added in not.loaded.dialog under mycroft-core/res/text/hi-in

I would like the first option to work. I want to give the input in Devanagari and output should also be in Devanagari (Hindi)

I would like to understand the flow how handle_current_weather() is invoked. Is there any documentation that explains the details. This would help me debug the issue.

handle_current_weather has decorator @intent_handler(IntentBuilder("").require("Weather").optionally("Location").build())

One of the phrases in Weather.voc is required to trigger the “current weather” intent. Optionally you can give a location, which in this case is defined as regex expression in Location.rx

1 Like