Dialogflow,从音频中检测意图

2023-12-26

我正在尝试将音频文件发送到对话流 API 进行意图检测。我已经有一个工作得很好的代理,但只能处理文本。我正在尝试添加音频功能,但没有成功。

我正在使用此页面中提供的示例(Java):

https://cloud.google.com/dialogflow-enterprise/docs/detect-intent-audio#detect-intent-text-java https://cloud.google.com/dialogflow-enterprise/docs/detect-intent-audio#detect-intent-text-java

这是我的代码:

public  DetectIntentResponse detectIntentAudio(String projectId, byte [] bytes, String sessionId,
                                         String languageCode)
            throws Exception {


            // Set the session name using the sessionId (UUID) and projectID (my-project-id)
            SessionName session = SessionName.of(projectId, sessionId);
            System.out.println("Session Path: " + session.toString());

            // Note: hard coding audioEncoding and sampleRateHertz for simplicity.
            // Audio encoding of the audio content sent in the query request.
            AudioEncoding audioEncoding = AudioEncoding.AUDIO_ENCODING_LINEAR_16;
            int sampleRateHertz = 16000;

            // Instructs the speech recognizer how to process the audio content.
            InputAudioConfig inputAudioConfig = InputAudioConfig.newBuilder()
                    .setAudioEncoding(audioEncoding) // audioEncoding = AudioEncoding.AUDIO_ENCODING_LINEAR_16
                    .setLanguageCode(languageCode) // languageCode = "en-US"
                    .setSampleRateHertz(sampleRateHertz) // sampleRateHertz = 16000
                    .build();

            // Build the query with the InputAudioConfig
            QueryInput queryInput = QueryInput.newBuilder().setAudioConfig(inputAudioConfig).build();

            // Read the bytes from the audio file
            byte[] inputAudio = Files.readAllBytes(Paths.get("/home/rmg/Audio/book_a_room.wav"));

            byte[] encodedAudio = Base64.encodeBase64(inputAudio);
            // Build the DetectIntentRequest
            DetectIntentRequest request = DetectIntentRequest.newBuilder()
                    .setSession("projects/"+projectId+"/agent/sessions/" + sessionId)
                    .setQueryInput(queryInput)
                    .setInputAudio(ByteString.copyFrom(encodedAudio))
                    .build();

            // Performs the detect intent request
            DetectIntentResponse response = sessionsClient.detectIntent(request);

            // Display the query result
            QueryResult queryResult = response.getQueryResult();
            System.out.println("====================");
            System.out.format("Query Text: '%s'\n", queryResult.getQueryText());
            System.out.format("Detected Intent: %s (confidence: %f)\n",
                    queryResult.getIntent().getDisplayName(), queryResult.getIntentDetectionConfidence());
            System.out.format("Fulfillment Text: '%s'\n", queryResult.getFulfillmentText());

            return response;

    }

我尝试过多种格式,wav(PCM 16 位几种采样率)和 FLAC,并且还以两种不同的方式将字节转换为 base64,如此处所述(通过代码或控制台):

https://dialogflow.com/docs/reference/text-to-speech https://dialogflow.com/docs/reference/text-to-speech

我什至使用本示例中提供的 .wav 进行了测试,使用该训练短语在我的代理中创建了一个名为“预订房间”的新意图。它使用对话框流控制台中的文本和音频工作,但仅适用于文本,而不是我的代码中的音频......并且我发送了他们提供的相同的 wav! (上面的代码)

我总是收到相同的响应(QueryResult):

我需要线索什么的,我完全被困在这里了。没有日志,响应中没有错误...但不起作用。

Thanks


我写信给对话流支持,并用一段工作代码回复了我。与上面发布的基本相同,唯一的区别是base64编码,没有必要这样做。

所以我删除了:

byte[] encodedAudio = Base64.encodeBase64(inputAudio);

(并直接使用inputAudio)

现在它正在按预期工作......

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Dialogflow,从音频中检测意图 的相关文章

  • 使用 jQuery 1.4 跨平台、跨浏览器播放声音的方式?

    我试图让 jQuery 在元素悬停 单击时播放声音 就像一个没有flash的flash网站 我已经尝试过推荐的方法跨平台 跨浏览器的方式从 Javascript 播放声音 https stackoverflow com questions
  • Android Mediaplayer:下载媒体文件的 setDataSource 问题

    我有一个可以录制和播放音频文件的应用程序 一些音频文件是使用 httpclient 使用简单的标准 http 下载来下载的 很长一段时间以来 它就像一种魅力 现在我突然无法播放我下载的文件 该堆栈失败 我将文件存储在 SDCard 上 并且
  • Android 服务 START_STICKY START_NOT_STICKY

    我需要让我的服务始终在后台运行 并使用 startService 函数启动我的服务 无论应用程序的状态如何 我都不想重新启动服务 这是我的观察 START STICKY gt 如果应用程序启动 则服务正在重新启动 当应用程序关闭时 服务也会
  • 如何将 G.726 ADPCM 信号转换为 PCM 信号?

    我通常会使用 SoX 或 Windows 内置的音频库来获取这些内容 但似乎两者都没有 G 726 编解码器 因此 我有一个字节序列 我知道它被编码为 G 726 尽管目前尚不知道比特率以及它是 mu law 还是 A law 实验将确定这
  • 为什么我无法使用 HTML5 音频标签多次播放声音?

    这就是声音的 存储 方式
  • Android-DeleteIntent,如何使用?

    目前 我的 Android 应用程序中有一个通知 该通知具有 PendingIntent 因此单击它时会打开一个活动 我目前保留了一个通知计数器 类似于本机未接来电通知 单击通知时 我可以将此计数器重置为 0 当用户选择 清除所有通知 按钮
  • 录制视频和音频并上传到服务器

    我想为网站添加视频录制功能 我一直在搜索并尝试所有可能的可用解决方案 但还没有任何工作正常 我已经尝试过以下解决方案 WebRTC 我知道使用 WebRTC 我们可以从网络摄像头和麦克风获取流 我发现了很多关于相同内容的文章 但没有一篇解释
  • 使用 IntentService 使用 Camera2 拍照

    我正在尝试创建一个可以拍照但不显示预览的应用程序 使用本教程 https www youtube com watch v oPu42I0HSi4 https www youtube com watch v oPu42I0HSi4如果我使用和
  • 如何在Android中没有Intent且没有任何视图窗口的情况下拍照

    大家好 我正在尝试弄清楚如何通过按下按钮来拍照 而不显示任何预览 我的想法是 我想要拍摄并保存照片 但之前或之后没有照片的视觉预览 到目前为止 我能够获取拍照并将其保存到磁盘的代码 没有任何问题 但如果没有表面视图或预览 我似乎无法做到这一
  • Android Intent通过jar

    我开发了一个 Android 应用程序 它有一个 UI 设计 如用户名 密码 在我在另一个应用程序中使用 Jar i 之后 我将我的应用程序转换为 jar 这意味着我将我的应用程序转换为库项目 我遵循此方法 1 我将 jar 添加到参考库路
  • 从资产文件夹加载时,电子邮件意图中的图像预览未显示

    我有类似以下代码 public void shareImageInEmail String imageUri Intent emailIntent new Intent Intent ACTION SEND emailIntent setT
  • 如何使用mb_detect_encoding检测编码是否正确?

    我想检测编码是否正确 但我发现 mb detect encoding 总是得到错误结果 并且我添加了很多encoding list UTF8 ISO 8859 你试图做的事情只是有时作品 编码检测并不是一门精确的 科学 因此您能做的最好的事
  • 如何在声音输入时触发振动?

    我正在尝试创建一个 Android 应用程序 在其中过滤蜂鸣声的一个特定频率并使手机振动 我正在从移动设备的 MIC 获取输入并使用 MediaRecorder 类 通过使用该类 我可以录制 保存和播放输入 现在我需要我的手机在发出蜂鸣声
  • 实施帐户链接 - 查询

    当我正在努力在我的 Google Actions 应用程序上实现帐户链接时 我向 Google 开发倡导者寻求帮助 他向我发送了一个我已经阅读过的文档文章的链接 并建议我也咨询 Stackoverflow 我也已经完成了第二个建议 并且努力
  • Android 和 Facebook 共享意图

    我正在开发一个 Android 应用程序 并且有兴趣了解如何使用 Android 的共享意图在应用程序内更新应用程序用户的状态 浏览过 Facebook 的 SDK 后 这似乎很容易做到 但是我很想允许用户通过常规的共享意图弹出窗口来做到这
  • SDK管理器不显示示例包选项

    我关注的是安卓安装示例的开发人员链接 http developer android com tools samples index html包裹 但是 当我展开Android平台的包列表时 没有 SDK示例 选项 复选框 可用 为什么 我已
  • 如果已运行,则阻止启动主要活动

    我有一个通过启动的应用程序intent filter行动 问题是 每次事件 操作发生时 Android 都会显示一个对话框 要求启动该应用程序 即使该应用程序已经启动 我希望行为如下 如果应用程序未打开 用户要求启动应用程序 如果应用程序在
  • 保存录制的 AVAudioRecorder 声音文件:现在怎么办? (iOS、Xcode 4)

    在我的应用程序中 我希望用户能够录制一个声音文件并播放它 然后保存该声音文件以供以后使用 我用了本教程 http www techotopia com index php Recording Audio on an iPhone with
  • 如何在Python中获取声音级别?

    对于我正在进行的项目 我需要获取麦克风的实时分贝级别 我见过阴谋家 Print out realtime audio volume as ascii bars import sounddevice as sd import numpy as
  • 自定义选择器活动:SecurityException UID n 无权 content:// uri

    我正在构建一个选择器应用程序来替换本机 Android 共享对话框 它工作正常 除非我尝试通过长按图像 gt 共享图像从 Chrome 共享图像 我发现 Google 没有捕获异常 它崩溃了 所以我可以通过 Logcat 查看它 在 Goo

随机推荐

  • ThreadPoolExecutor:: 来自执行器的 TaskRejectedException

    我的应用程序正在通过 Jms MessageListener 类读取消息 并且在某个时间点它会抛出异常任务拒绝异常 我知道你们大多数人都会说线程数超出了最大池大小而且队列也满了 但我观察到一些事情 发送到 MessageListener 类
  • 创建与数据库表同名的缓冲区

    我在很多地方都遇到过这段代码 DEFINE BUFFER Customer FOR Customer 我有两个问题 这样做的目的是什么 为什么创建与表同名的缓冲区是有益的 当编写代码访问该表 缓冲区时 Progress 如何知道是直接访问
  • Foreman 不使用 NGINX

    我正在尝试使用Foreman https github com ddollar foreman 版本 0 31 0 来管理我们应用程序的进程 但我对 nginx nginx 1 0 10 Phusion Passenger 3 0 11 的
  • 为什么 C 代码中的 1.0f 在生成的程序集中表示为 1065353216?

    在 C 中我有这个代码块 if x 1 a j i 1 else a j i 0 a是一个浮点值矩阵 如果我尝试以 nasm 语法查看此代码的编译程序集 线a j i 0 作业 以这种方式编码 dword rsi rdi 0 但这条线a j
  • Java 中箭头运算符“->”有什么作用?

    在搜索一些代码时 我遇到了箭头运算符 它到底是做什么的 我以为Java没有箭头运算符 return Collection
  • Entity Framework 5 的新迁移功能是否完全支持枚举更改?

    假设我们有以下简单模型 public class Car public int Year get set public string Make get set public string Model get set public CarTy
  • 如何编辑 jquery 函数

    我正在尝试修改 jQuery V 6 1 核心中的 attr 函数 我有一个plugins js 文件 该文件包含在jquery 6 1 js 文件之后的页面中 plugins js 文件包含对各种 jQuery 核心函数的改进 以适应某些
  • Scrapy获取任何网站的所有链接

    我有以下 Python 3 网络爬虫代码 import requests from bs4 import BeautifulSoup import re def get links link return links r requests
  • C++ 使用构造函数参数初始化成员数组

    我有一个模板类 其中包含编译时常量长度的单个成员数组 我希望这个数组是常量 但根据构造函数提供的输入初始化它被证明很困难 struct Input int value template
  • 正则表达式:理解音节计数器代码

    我用过迪伦的问题 https stackoverflow com questions 5686483 how to compute number of syllables in a word in javascript这里关于 JavaSc
  • 加入位于不同 Docker 容器中的 serf 节点时出现问题

    上下文 主机是 AWS EC2 Ubuntu 14 04 5 带有 Docker 版本 17 05 0 ce 容器是根据公开可用的存储库映像构建的cbhihe serf alpine bash 所有容器都位于同一个 EC2 实例上 并与网络
  • 如何知道两个单词是否具有相同的词根?

    我想知道 在几种语言中 两个词是否是 要么同一个词 或同一个词的语法变体 例如 had and has具有相同的基础 在这两种情况下 它都是动词have city and cities具有相同的基数 went and gone具有相同的基数
  • Xcode 4 idekeybounds 一次击键可绑定多个命令

    拼命尝试自定义 Xcode 4 键绑定 我正在编辑用户 idekeybindings 文件 当打开时修改该文件 然后随后尝试通过键绑定界面进行更新时 xcode 有时会擦除该文件 可爱 我的理解是 提供一个命令 选择器 而不是仅仅一个字符串
  • bash:nano:在 Windows git bash 中找不到命令

    我在 Windows 电脑上使用 git 版本 2 7 0 windows 1 我使用了以下命令 nano README 结果我 bash nano command not found 现在如何将 Nano 文本编辑器安装到 git bas
  • 理解 main 的一个不常见的参数

    以下问题是在大学编程竞赛中给出的 我们被要求猜测输出和 或解释其工作原理 不用说 我们都没有成功 main write read 0 1 main 一些简短的谷歌搜索让我找到了这个确切的问题 在codegolf stackexchange
  • 正则表达式的含义如 - \\d , \\D, ^ , $ 等 [重复]

    这个问题在这里已经有答案了 这些表达的意思是什么 我在哪里可以了解它们的用法 d D s S w W t n etc 我需要使用stringr包 我完全不知道如何使用这些 From regexp 在里面扩展正则表达式部分 插入符号 和美元符
  • 子查询上的 Groupwise MAX()

    我正在尝试计算返回表中的最大值以及该表中的其他值 然而 我正在执行此操作的表不是 真正的 表 它是由子查询生成的表 这给我带来了问题 因为我认为在不重新指定整个子查询的情况下我无法连接它两次 我目前有一个 SQL Server 解决方案 使
  • React中继injectNetworkLayer不是一个函数

    我正在遵循 lynda 的教程 构建和部署全栈 React 应用程序 在 注入中继网络层 一章中 在index js中 尝试设置网络层 程序编译成功 但我在浏览器中收到以下错误 类型错误 WEBPACK IMPORTED MODULE 4
  • com.google.cloud.pubsub.spi.v1.Publisher.publish 未将数据发送到 PubSub

    对新版本的调用com google cloud pubsub spi v1 Publisher publish pubsubMessage get 永远挂着 我不确定问题是什么 代码片段 com google cloud pubsub sp
  • Dialogflow,从音频中检测意图

    我正在尝试将音频文件发送到对话流 API 进行意图检测 我已经有一个工作得很好的代理 但只能处理文本 我正在尝试添加音频功能 但没有成功 我正在使用此页面中提供的示例 Java https cloud google com dialogfl