标签: webspeech-api

在数组中说出单词

我想用Web Speech API大声说出一系列单词.

这些词是一,二,三,四,五.

在Chrome上说出单词时,下面的脚本会显示第一个单词,然后重复最后一个单词,直到迭代完成,语音输出为:

一,五,五,五,五.

在Firefox上,脚本说第一个单词然后停止,语音输出是:

一个.

我已经把东西记录到控制台,试图弄清楚发生了什么,这是两个浏览器的结果.

word: one
message: one 
word: two 
message: two 
word: three 
message: three 
word: four 
message: four 
word: five 
message: five
Run Code Online (Sandbox Code Playgroud)

控制台的输出是所需的语音输出,所以我不确定到底发生了什么.

var msg = new SpeechSynthesisUtterance();
var words = ['one', 'two', 'three', 'four', 'five'];

for (var i = 0; i < words.length; i++) {
    msg.text = words[i];

    console.log('word: ' + words[i]);
    console.log('message: ' + msg.text);

    window.speechSynthesis.speak(msg);
}
Run Code Online (Sandbox Code Playgroud)

可能导致这种情况的原因是什么?我该怎么做才能纠正它?

javascript text-to-speech speech-synthesis webspeech-api

3
推荐指数
1
解决办法
123
查看次数

如何在语音合成中添加语音/语言?

speechSynthesis.getVoices()在Chrome中运行时,我会列出可能的声音。列表会根据计算机和Chrome版本的不同而变化。

有什么办法可以扩展支持并增加声音?

我觉得这可以通过要求用户下载他们选择的语言的语音文件来完成。是否存在这样的文件?

编辑:

这需要同时适用于Windows和Mac计算机。

它也必须很简单,因此不需要脚本或任何需要大量技术知识的东西。我希望有一种“下载并安装”类型的东西

javascript voice text-to-speech speech-synthesis webspeech-api

3
推荐指数
1
解决办法
1752
查看次数

网络语音API语法

有人能告诉我这是什么吗

 const grammar = '#JSGF V1.0; grammar colors; public <color> = aqua | azure | beige | bisque | black | blue | brown | chocolate | coral | crimson | cyan | fuchsia | ghost | white | gold | goldenrod | gray | green | indigo | ivory | khaki | lavender | lime | linen | magenta | maroon | moccasin | navy | olive | orange | orchid | peru | pink | plum | purple …
Run Code Online (Sandbox Code Playgroud)

javascript speech-recognition ecmascript-6 webspeech-api

3
推荐指数
1
解决办法
309
查看次数

Safari 浏览器上的网络语音识别结果不佳

您好,

我目前正在尝试在我的应用程序上实现语音识别功能。根据此处的JS 文档,自 Safari 14.1 起支持语音转文本。另外,我正在使用以下配置:

    const { webkitSpeechRecognition } = (window as any)
    const recognition = new webkitSpeechRecognition();
    recognition.lang = 'pt-BR';
    recognition.continuous = true;
    recognition.interimResults = false;
    recognition.maxAlternatives = 1;
    // Avoid garbage collection bugs
    this.garbage.push(recognition);
    recognition.start();
Run Code Online (Sandbox Code Playgroud)

在 Chrome 上它工作得很好,但在 Safari 上识别结果非常糟糕。它有时能理解我的意思,但常常会误解我的话,给我错误的结果。例如,如果我说:“你好助手,更改对比度”,结果可能类似于:“你好助手充电合同你好助手充电”之类的。

这个问题的一个特点是 safari 上的语音识别接口触发的事件只是startaudiostart

有没有人面临类似的问题或找到了解决这个问题的方法?我还接受在我的应用程序上实现语音识别的替代方案。

提前致谢!


编辑

就我而言,您可以通过访问任何依赖 Web Speech API 的网站来看到此问题。您可以检查一些示例:

https://www.google.com/chrome/demos/speech.html

https://www.audero.it/demo/web-speech-api-demo.html

javascript safari speech-to-text ios webspeech-api

3
推荐指数
1
解决办法
1580
查看次数

Safari中未触发配音事件

据我所知,在Mac或iOS中,在Safari中均不会触发voiceschanged事件。同样奇怪的是,它似乎也没有在iOS上的Chrome中启动,但是我假设iOS上的Chrome使用与Safari相同的JavaScript引擎。

这是我用来验证的一个演示:http : //jsbin.com/gosaqihi/9/edit?js,控制台(摘自“ 获取语​​音中的语音列表”,Chrome合成(Web Speech API)

我也尝试过使用addEventListener:

speechSynthesis.addEventListener("voiceschanged", function () {
    var voices = speechSynthesis.getVoices(),
        keys = Object.keys(voices[0]),
        i, j;

    document.write("<table border=1><tr>");

    for ( i = 0; i < keys.length; i++ ) {
        document.write("<td>" + keys[i] + "</td>");
    }

    document.write("</tr>");

    for ( i = 0; i < voices.length; i++ ) {
        document.write("</tr>");
        for ( j = 0; j < keys.length; j++ ) {
            document.write("<td>" + voices[i][keys[j]] + "</td>");
        }
        document.write("</tr>");
    }

    document.write("<table>");
}, false);
Run Code Online (Sandbox Code Playgroud)

两种方法(onvoiceschanged,addEventListener)在Windows,Android和Mac的Chrome浏览器中都可以正常运行,但在iOS的Chrome和Mac和iOS的Safari浏览器中无法运行。据我所知,Safari根本不会触发变声事件。

复杂的事情,我实际上没有任何苹果设备,因此我不得不通过让朋友尝试一下来弄清楚。 …

javascript safari html5 speech-synthesis webspeech-api

2
推荐指数
1
解决办法
633
查看次数

DOMException:无法启动音频源

我正在编写一个 React 应用程序,并使用Web Speech API进行语音和语音识别。我编写了一些适用于桌面 Chrome 的代码。我向用户请求许可的方式如下:

 navigator.mediaDevices
  .getUserMedia({ audio: true })
  .then(function (stream) {
        console.log('Succeeded');
        /*Handle success*/
  })
  .catch(function (err) {
        console.log('Failed: ', err)
        /*Handle failure*/
  });
Run Code Online (Sandbox Code Playgroud)

但是,当从我的 Android 手机使用时,相同的代码始终会转到 catch 回调,并将以下内容写入控制台:

Failed: DOMException: Could not start audio source
Run Code Online (Sandbox Code Playgroud)

该网站询问我是否允许使用麦克风,当我进入网站设置时,它说允许使用麦克风和声音,这让我相信我已经很好地完成了用户交互部分。该网站通过 HTTPS 提供服务(已经解决了该问题),因此我相信这也不是问题。

本次测试中我使用的是小米 9 和 Chrome Chrome 86.0.4240.185。

我的第一直觉是我在这里做错了什么?如果是这样的话,怎么办?否则,我可以做什么来解决这个问题?

webspeech-api

1
推荐指数
1
解决办法
5048
查看次数

AngularJs如何检测范围变量对象的变化

我正在使用angular-webspeech-directive

这是HTML代码:

<!DOCTYPE html>
<html ng-app="plunker">

<head>
    <meta charset="utf-8" />
    <title>TestBed</title>
    <link data-require="bootstrap-css@3.0.0" data-semver="3.0.0" rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" />
    <link data-require="font-awesome@4.3.0" data-semver="4.3.0" rel="stylesheet" href="//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css" />
    <link href="//netdna.bootstrapcdn.com/font-awesome/3.2.1/css/font-awesome.css" rel="stylesheet" />
    <link rel="stylesheet" href="css/style.css" />

</head>

<body ng-controller="MainCtrl" ng-cloak="">

<div class="container">

    <div class="row">
        <div class="col-md-12">

            asdfasdf
            <js-speech ng-model="speech"></js-speech>

            <!--
            <pre>js-speech ng-model="speech"</pre>
            <br />-->

            <strong>Debugger</strong>
            <pre>$scope.speech:{{speech|json}}</pre>
        </div>
    </div>
</div>

<!-- Application Scripts -->
<script data-require="jquery@2.0.3" data-semver="2.0.3" src="http://code.jquery.com/jquery-2.0.3.min.js"></script>
<script data-require="angular.js@1.0.x" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.8/angular.min.js" data-semver="1.0.8"></script>
<script data-require="modernizr@2.6.2" data-semver="2.6.2" src="//cdnjs.cloudflare.com/ajax/libs/modernizr/2.6.2/modernizr.js"></script>



<script src="js/Speech.js"></script>
<script src="js/speechapp.js"></script>

</body>

</html>
Run Code Online (Sandbox Code Playgroud)

这是角度speechapp.js

(function() { …
Run Code Online (Sandbox Code Playgroud)

angularjs webspeech-api

0
推荐指数
1
解决办法
7129
查看次数