Tia*_*usa 11

简短的回答是否定的.

网络语音API规范并不禁止这种(浏览器可以允许最终用户选择一个文件作为输入使用),但音频输入流是永远不会提供给主叫JavaScript代码(在当前的草案版本),所以您无法读取或更改输入到语音识别服务的音频.

设计此规范是为了使javascript代码只能访问来自语音识别服务的结果文本.

  • @ guest271314我不确定你的论点是什么,但规范没有指定**程序员**直接向Speech Recognition API提供音频文件的方法.*这是一个事实*.当然,用户可以将他们的音频输出连接到他们的麦克风输入并播放MP3文件,它可以工作.但是语音识别API并未指定程序员提供自己的音频输入(如文件)的方式,这正是OP所寻求的. (5认同)
  • @ guest271314是的,所有这些都是正确的,但您作为API的用户无法将音频文件指定为`start()`方法或SpeechRecognition API的任何其他成员的参数.音频输入由用户代理(浏览器)决定,并且当前实现仅使用麦克风作为音频输入.但是,正如我所说,规范并没有禁止浏览器允许最终用户(人)将音频文件指定为输入,而不是麦克风,但这仍然不是给程序员的选择,并且未在规范中指定. (2认同)

And*_*kyi 7

default基本上,您只能将它与在操作系统级别选择的音频输入设备一起使用...

因此,您只需要将文件播放到default音频输入中

可能有 2 个选项:

1

今天对此进行了测试,效果很好:-)

2

这不是我测试过的,所以我无法确认这是否有效,但是您可以使用 Selenium 将音频文件输入到 chrome 中......就像

DesiredCapabilities capabilities = DesiredCapabilities.chrome(); 
ChromeOptions options = new ChromeOptions();
options.addArguments("--allow-file-access-from-files",
                     "--use-fake-ui-for-media-stream",
                     "--allow-file-access",
                     "--use-file-for-fake-audio-capture=D:\\PATH\\TO\\WAV\\xxx.wav",
                     "--use-fake-device-for-media-stream");
capabilities.setCapability(ChromeOptions.CAPABILITY, options);
ChromeDriver driver = new ChromeDriver(capabilities);
Run Code Online (Sandbox Code Playgroud)

但我不确定这个流是否会取代default音频输入