response - 让谷歌助手用另一种语言回复
问题描述
我已经在谷歌的 Dialogflow 中设置了一个应用程序/代理。我已经让我的助手与之交谈,并对我设置的服务执行 Web 挂钩。
用户用英语与谷歌助手交谈,谷歌正在与之交谈的服务,基本上只是随机化一个瑞典语单词,并将其作为瑞典语的文本呈现给语音。
例如,“Ok Google,与 testapp 谈谈今天的话。” 谷歌回应“Dagens ord: köttfärs”。
但是,与用户对话的谷歌语音卡在英语中,我无法将其更改为瑞典语响应。我希望该应用程序用英语收听,但如果这有意义,则用瑞典语回复,这是英语朋友学习瑞典语单词的训练练习。
我发现一些 API 文档提到locale
,所以我试着摆弄它,但接缝被绑定到客户端/代理的源语言,决定了结果的声音..
这是响应数据(python格式):
response_headers = {}
response_headers[b'Content-Type'] = b'application/json'
response_headers[b'Google-Assistant-API-Version'] = b'v2'
response_data = {
"fulfillmentText": TTS,
"locale" : "sv-SE",
"fulfillmentMessages": [
{
"card": {
"title": TTS,
"subtitle": TTS,
"imageUri": "https://assistant.google.com/static/images/molecule/Molecule-Formation-stop.png",
"buttons": [
{
"text": "Turn it off",
"postback": "https://service.com/google_home.py?state=off"
}
]
}
}
],
"source": "service.com",
"payload": {
"google": {
"expectUserResponse": False,
"locale" : "sv-SE",
"richResponse": {
"items": [
{
"simpleResponse": {
"textToSpeech": TTS,
"locale" : "sv-SE"
}
}
]
}
}
}
}
有没有办法告诉助手它应该在回复时切换语言上下文,而不是取决于输入?添加locale
上面的接缝做的很少,所以我想我离这里很远?
例如,我应该提到这TTS
句话"Dagens ord: köttfärs"
。
解决方案
不幸的是,没有直接支持的方式让助手以不同于设置对话的语言回复(这是它所期望的输入)。
对于简单的事情,您可以使用 SSML 来播放预先录制的音频,而不是使用文本转语音。就像是
<speech>
<audio src="https://example.com/audio/dagens-ord-kottfars.mp3">
<desc>Dagens ord: köttfärs</desc>
</audio>
</speech>
如果您需要使其更具动态性,您可以创建另一个 webhook 来获取您想要的文本,并使用Google 的 text-to-speech API 之类的东西来创建 mp3 音频。然后,您可以提供此 URL 作为音频的 src。(不幸的是,谷歌似乎也不允许数据 URL。)
推荐阅读
- unreal-engine4 - UE4 - 使用 mixamo 的新手问题 abt 工作流程
- java - 如何解决 unresolve 依赖 ':app@debug/compileClasspath': 无法解析 com.google.android.gms:play-services-base:[15.0.0, 16.0.0)
- python - 如何在 Spark 中使用用户定义模式创建 DataFrame
- java - 在 java/spring boot 中的 HTTP GET 请求中发送 JSON 正文
- python - 使用 pandas.read_excel 读取 excel 时转换科学记数法(十进制值中的字母)
- c# - 刷新页面 PopAsync()
- lua - var 中的 var = var 中的 var + 1
- c++ - 使用 std::hash
对于自定义类 - javascript - 从 Vue 中添加 Google 跟踪代码管理器(在获得同意后)
- java - 使用 Spring Kafka 编写的单元测试 Kafka Consumer