locked
Cortana and "classic" voice commands RRS feed

  • Question

  • Hi there,

    today I installed WP8.1 and the new dev SDK to check out my apps on the new OS version. I have two voice controlled apps (e.g. powernAPP: http://bit.ly/1kw4Pxb), which core element is the voice command feature of WP. For example the user can say "power nap for 30 minutes", and an alarm will be set to the given time. Everything was working perfectly up to now...

    But since the "release" of WP8.1 OS, I have a lot of trouble with Cortana. Most basically, I can now just start an app, but I'm no more able to launch an app with a more advanced voice command. According to MSDN (http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj206959(v=vs.105).aspx), the classic voice command feature should still be supported.

    Could anyone help me, please? Are there any changes in the use of voice commands? Or does anybody have the same problems?

    Thank you,

    Benjamin

    Tuesday, April 15, 2014 9:02 PM

All replies

  • I would also like to know the answer to this question. I have been unable to get voice recognition working within my apps. Each time my app is launched with Cortana I get the splash screen and it just crashes. I didn't have this problem before the Dev Preview update.

    I haven't been able to locate documentation on Cortana either, thinking that maybe I couldn't use voice recog anymore without Cortana code but I'm not sure now what the problem is.

    For reference, I'm using a Lumia 1520 for testing.

    Wednesday, April 16, 2014 12:17 AM
  • Hi Benjamin,

    Sorry you're having some difficulties with the WP8.1 Developer Preview, Cortana, and your existing Voice Command enabled applications.

    I just downloaded your powernAPP application, and tried it out. I can reproduce the fact that by voice, it's difficult to launch the app. I can get some commands to fire, but not others...

    Could you please send your exact VCD to me, via my blog contact form? I'll see if the dev team can take a look to understand why this is happening.

    Thanks.


    This posting is provided "AS IS" with no warranties, and confers no rights.

    Wednesday, April 16, 2014 1:39 PM
  • Hello Rob,

    thank you for your help. I've sent you the VCD file.

    Because Cortana is currently available in some countries, I checked out what appens in Cortana-unsupported language. I checked out German (my mother tongue). After holding the Search-Key [not the Windows key like in WP8 ... took a while to figure this out ;) ] a voice-input page pops up (which has a Cortana-UI, but I think it is based on the old TellMe service). Here, the voice commands are working perfectly like in WP8.

    Ben

    Wednesday, April 16, 2014 4:36 PM
  • Hello Ben. I work in Rob's team on voice commands. We looked at your VCD file and we think the problem might be related to the numbers represented as numerals. In generating a speech recognition grammar from the VCD commands the grammar compiler uses a process called text normalization (TN) to convert the numerals into text. When there are many numbers TN can create a lot of extra grammar "rules" that makes the grammar more complex, leading to a lower confidence score in the speech recognition result.
    For example, a number like 13 can map into "one three", "thirteen", "two thousand thirteen". And when you string them together the number of rule paths in the grammar expand accordingly.
    The reason this affects accuracy in Cortana but not WP 8.0 might be because Cortana is listening for a lot more, i.e, there are a lot more grammar rules vieing for her attention. So a low confidence score that didn't affect your app in WP 8.0 shows up as a mis-recognition in WP8.1/Cortana.
    The solution is to use words for numbers in the VCD and map them into numbers if necessary once inside the app. You might also want to just use numbers that are multiples of 5 minutes for example to avoid too many numbers. So for example you might have

        <PhraseList Label="minute">

          <Item> oh clock </Item>

          <Item> oh five </Item>

          <Item> ten </Item>

          <Item> fifteen </Item>

          <Item> twenty </Item>

          <Item> twenty-five </Item>

          <Item> thirty </Item>

          <Item> thirty-five </Item>

          <Item> fourty </Item>

          <Item> fourty-five </Item>

          <Item> fifty </Item>

          <Item> fifty-five </Item>

        </PhraseList>

    And then map those into numbers in your code e.g.

    public class NumberConverter

        {

            private static Dictionary<string, int> NumberMap;

            static NumberConverter()

            {

                NumberMap = new Dictionary<string, int>();

                NumberMap.Add("one", 1);

                NumberMap.Add("oh one", 1);

                NumberMap.Add("first", 1);

                NumberMap.Add("January", 1);

                NumberMap.Add("two", 2);

                NumberMap.Add("oh two", 2);

                NumberMap.Add("second", 2);

                NumberMap.Add("February", 2);

    Or whatever is appropriate for your app.

    Thanks again for your interest in speech apps on Windows Phone!

    Best regards,

    F Avery Bishop


    • Edited by FAveryB Wednesday, April 16, 2014 10:25 PM
    Wednesday, April 16, 2014 10:17 PM
  • Sounds interesting. Thank you!

    I will test that tomorrow and give you feedback if this solves the problems.

    Best regards,

    Benjamin

    Wednesday, April 16, 2014 10:46 PM
  • Sorry, I wasn't able to test it up to now. I will to it in a couple of days.

    But I think I found an easter egg or something today in the SpeechRegognizerUI today:

    I just said "Email for corrected translations for Italian and Indonesian". But the regognized version is much better :D

    Is there any reason for the XML-tags ?

    Friday, May 2, 2014 10:27 PM
  • Sorry for the question. 1 sec web search and I already found the answer:

    http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj206993(v=vs.105).aspx

    Friday, May 2, 2014 10:29 PM