dialogflow-es - 使用 Google SR 插件和动态语音上下文来提高 Google Cloud Speech-to-text API 和 Dialogflow 的性能
问题描述
任务:我们正在尝试构建一个 Dialogflow 代理,该代理将通过我们的 Cisco 电话堆栈与呼叫者进行交互。我们将尝试从调用者那里收集字母数字凭据。
这是我们提出的架构:
问题:为了将文本输入发送到 Dialogflow,我们使用 Google Cloud 的 Speech-to-Text (STT) API 将调用者的音频转换为文本。但是,STT API 并不总是按预期执行。例如,如果呼叫者希望说他/她的出生日期是04-04-90
,转录的音频可能会返回为oh for oh 490
。然而,通过向 API 传递短语提示可以大大改善转录的音频,因此我们需要根据场景动态发送这些提示。不幸的是,我们很难理解如何通过 UniMRCP 服务器动态传递这些短语提示,特别是Google Speech Recognition 插件。
问题:Google 语音识别手册的第 5.2 节概述了使用动态语音上下文。
提供的示例是:
<grammar mode="voice" root="booking" version="1.0" xml:lang="en-US" xmlns="http://www.w3.org/2001/06/grammar">
<meta name="scope" content="hint"/>
<rule id="booking">
<one-of>
<item> 04 04 1990</item>
<item> 04 04 90</item>
<item> April 4th 1990</item>
</one-of>
</rule>
</grammar>
这是否仍然像内置语法builtin:speech/transcribe
一样转录所有用户输入?
例如,如果我要说March 5th 1980,
Google 的 STT 会返回March 5th 1980,
还是只返回提供的项目之一?
明确地说,我希望 Google 的 STT 能够返回的不仅仅是提供的项目,因此如果用户说March 5th 1980,
我希望通过 UniMRCP、VBB、CVP 返回并传递给 Dialogflow。 有人告诉我,即使 STT 返回March 5th 1980
CVP 或语音浏览器也可能会将其评估为“不匹配”。
解决方案
推荐阅读
- flutter - How to generate new route to the new stfull widget when user created new container?
- python - 如何更改文件位置
- python - How to use async function based views in DRF?
- python - 如何找到numpy数组中元素之间的距离?
- blazor - blazor如何将组件中的变量值传递给MainLayout组件
- ubuntu - 包等效搜索:Ubuntu libace-6 => Fedora
- android - Firebase Cloud Firestore - 如果我的应用程序达到每天的最大文档写入/读取量会怎样?
- c# - .NET Core 5 下的 ConfigurationBuilder 中不存在 SetBasePath
- python - 连接四板的问题
- django - django drf 用谷歌测试社交 oauth2