locked
Text-To-Speech/Speech-To-Text Language Packages

    Question

  • Hello,

    i want to use Text-To-Speech/Speech-To-Text in my Application, but the problem is that 

    using Windows.Media.SpeechSynthesis;
    using Windows.Media.SpeechRecognition;

    it only supports English currently. Do i have to download a Language Package? And Where can i find those packages?

    Not 100 % sure if it actually is a tool for Windows Store Apps or a programming Question.

    Tuesday, October 14, 2014 7:05 AM

Answers

  • Hello,

    This is not a development question. You cannot add additional languages to the phone programatically. The user can add additonal languages to their phone using "settings/language/add language".

    I hope this helps,

    James 


    Windows SDK Technologies - Microsoft Developer Services - http://blogs.msdn.com/mediasdkstuff/

    • Marked as answer by B.Ke Thursday, October 16, 2014 12:59 PM
    Tuesday, October 14, 2014 11:33 PM
    Moderator

All replies

  • Hello,

    This is not a development question. You cannot add additional languages to the phone programatically. The user can add additonal languages to their phone using "settings/language/add language".

    I hope this helps,

    James 


    Windows SDK Technologies - Microsoft Developer Services - http://blogs.msdn.com/mediasdkstuff/

    • Marked as answer by B.Ke Thursday, October 16, 2014 12:59 PM
    Tuesday, October 14, 2014 11:33 PM
    Moderator
  • Text To Speech using SSML

    This is how you get all Voices:

    using (var Speaker = new SpeechSynthesizer())
        {
           var voices = SpeechSynthesizer.AllVoices;
        }

    Currently there is only a Male and Female English Voice. 

    This is how it should change the Voice per SSML:

    var ttsJP = new SpeechSynthesizer();
    
    SpeechSynthesisStream ttsStream = 
        await ttsJP.SynthesizeSsmlToStreamAsync(@"
    <speak version=""1.0"" xmlns=""http://www.w3.org/2001/10/synthesis"" xml:lang=""ja-JP"">
            <voice gender=""male"">趣味は日本語を勉強することです
            </voice>                       
    </speak>");

    Doesn't work too.

    Of Course it doesn't help to change the Phone's language.


    • Edited by B.Ke Wednesday, October 15, 2014 7:00 AM
    Wednesday, October 15, 2014 6:59 AM
  • Hello,

    Are you saying that if the user installs the desired language pack (ja-JP) and you switch the language for the phone to "ja-JP", AllVoices always returns the English voices?

    -James


    Windows SDK Technologies - Microsoft Developer Services - http://blogs.msdn.com/mediasdkstuff/

    Thursday, October 16, 2014 12:38 AM
    Moderator
  • Oh Well. I have to download Speech Recognition in my Phone's Lanugage settings.

    Thanks for your help


    • Edited by B.Ke Thursday, October 16, 2014 8:29 AM
    Thursday, October 16, 2014 7:33 AM
  • Hello,

    In my experience default voices are (most of the time) already available (the ones matching the phone language).

    You'll need to explicitly indicate the user to install a voice pack only if no voice is available (i.e. AllVoices returns nothing) or if your app needs another voice pack than the default one (for example Chinese).

    In all cases you cannot make the assumption that a particular voice pack is available.

    There is no task to launch voice installation directly from an app.

    Alex.

    • Edited by _ Alex Thursday, October 16, 2014 8:04 AM
    Thursday, October 16, 2014 8:02 AM
  • Ok.

    //Set the Voice/Speaker
    ttssynthesizer.Voice = SpeechSynthesizer.DefaultVoice;

    I could change the Text-To-Speech Voice, but now i have a problem with Speech-To-Text.

    My SpeechRecognizer.CurrentLanguage still is "en-GB" only and I can't change it.


    • Edited by B.Ke Thursday, October 16, 2014 8:41 AM
    Thursday, October 16, 2014 8:38 AM
  • I don't know if it helps but here's how to enumerate the available voices:

    IEnumerable<VoiceInformation> voices = from voice in InstalledVoices.All
    where ... // TODO: your criteria
    select voice;

    Then you can set the one you want to use:

    VoiceInformation voiceToUse = voices.First(); // TODO: check at least a voice is available
    SpeechSynthesizer.SetVoice(voiceToUse);

    Alex.



    • Edited by _ Alex Thursday, October 16, 2014 8:57 AM
    Thursday, October 16, 2014 8:55 AM