Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript SpeechSynthesis如何返回选定的语言列表?_Javascript_Speech To Text_Speech Synthesis - Fatal编程技术网

Javascript SpeechSynthesis如何返回选定的语言列表?

Javascript SpeechSynthesis如何返回选定的语言列表?,javascript,speech-to-text,speech-synthesis,Javascript,Speech To Text,Speech Synthesis,各位早上好, 我还在写一份针对文盲的调查问卷。为此,我使用了一个文本到语音的应用程序(感谢@JO3-W3B-D3V) 问题在于调查问卷将以多种语言开发,这意味着文本到语音应用程序也必须支持多种语言 SpeechSynthesis.getVoices() 如果我理解正确,上述函数将返回表示当前设备上所有可用语音的所有对象的列表。现在回答我的问题: 有没有办法返回这些语言的选择?例如,列表不应返回设备上可用的所有15种语言,而应仅返回所选的4种语言 有没有办法向设备添加更多语言?我用的是铬。如果我

各位早上好,

我还在写一份针对文盲的调查问卷。为此,我使用了一个文本到语音的应用程序(感谢@JO3-W3B-D3V)

问题在于调查问卷将以多种语言开发,这意味着文本到语音应用程序也必须支持多种语言

SpeechSynthesis.getVoices()
如果我理解正确,上述函数将返回表示当前设备上所有可用语音的所有对象的列表。现在回答我的问题:

  • 有没有办法返回这些语言的选择?例如,列表不应返回设备上可用的所有15种语言,而应仅返回所选的4种语言

  • 有没有办法向设备添加更多语言?我用的是铬。如果我理解正确,Chromes从微软和谷歌那里获得了语言。因此,如果我在操作系统(Windows 10)中添加新语言,Chrome应显示新语言选项。这个假设正确吗?我这么问是因为我已经这么做了,没有任何改变,所以我可能错过了一些东西

  • 希望我的问题有意义:)

    祝你今天愉快

    解释 好的,我将分两部分回答这个问题,考虑到你已经问了两个问题,谢天谢地,这两个问题都相对简单明了

    问题一 你问过如何获得你想要支持的所选语言,这很简单,就像操作数组一样简单,在我的示例中,我使用了函数,非常简单

    p.S.为了某种形式的一致性,我以一种非常类似于我在中所写的关于
    演讲合成的方式编写了这个片段

    假设 正如代码注释中所述,我编写此代码段的方式确保没有重复的条目,即在下面的代码段中,您将得到一个列表,其中只包含一个支持英语的实体。换句话说,你不会同时拥有
    en GB
    en US
    ,当然你可以改变这一点,我只是假设你想要这种类型的功能,当然这完全取决于你&你的需求

    //为了生活而生活。
    (功能(){
    “严格使用”;
    //这是您希望支持的语言的简单列表。
    var-supportedLanguages=['en','de','es','fr'];
    var语言=[];
    //这本质上类似于jQuery的$.ready。
    var ready=函数(回调){
    var d=文件,
    s=d.readyState;
    //已加载的DOMContentLoaded被激发
    如果(s==“完成”| | s==“加载”| | s==“交互”){
    回调();
    }否则{
    如果(d.addEventListener){
    d、 addEventListener(“DOMContentLoaded”,回调,false);
    }否则{
    d、 attachEvent(“onDOMContentLoaded”,回调);
    }
    }
    };
    //这只是一个简单的函数,用于处理您是否愿意
    //是否将语音推送到阵列上。
    var shouldush=函数(数组、对象){
    var language=object.lang | |“”;
    var snipped=language.substring(0,2);
    //生成所有已知语言的列表。
    var languageList=array.map(函数(对象){
    返回object.lang;
    });
    //创建一个简短语言名称列表。
    var snippedList=languageList.map(函数(语言){
    返回语言。子字符串(0,2);
    });
    //我个人认为,除了一个臃肿的if语句之外
    //更具可读性。
    //
    //仅推送相关实体,保存任何重复实体,即。
    //这将不允许en US和en GB都在列表中,
    //这是可以改变的,这仅仅是基于你
    //不希望同时使用en US和en GB等。
    var isToPush=!snippedList.includes(已剪切)&&
    !languageList.includes(语言)&&
    支持的语言。包括(剪切);
    //如果为true,则推送到数组。
    如果(isToPush){
    array.push(对象);
    }
    //然后当然返回数组对象。
    返回数组;
    };
    //这基本上是您选择支持的声音列表。
    var getSelectedLanguages=function(){
    languages=speechSynthesis.getVoices().reduce(shouldush,[]);
    };
    //此代码段的起点。
    var start=function(){
    speechSynthesis.onvoiceschanged=函数(){
    getSelectedLanguages();
    console.log(语言);
    };
    };
    //准备好后运行代码。
    准备好(开始);
    
    })();首先谢谢你。你证实了我的想法,即我的第二个问题缺乏信息。关于代码我仍在挣扎。我是否需要在您在我的第一个问题中提供的基础上额外使用它?我也尝试过合并这两个代码,但我又一次缺乏帮助的技能。@InPanic你能告诉我你做了什么或你想做什么,我就做一个JSFiddle什么的吗?