Unity接入百度语音识别SDK windows平台

1.先注册百度开放平台的账号,然后按文档申请试用资格及创建应用:https://ai.baidu.com/ai-doc/SPEECH/qknh9i8ed

 Windows平台选择“不需要”就可以了。

2.下载C# SDK包

解压以后里面包含这两个文件夹,我工程里面用的是net45,将文件夹放入unity Assets/Plugins文件夹下:

对应unity的Api Compatibility Level属性设置要改为.NET 4.X,设置路径为PlayerSetting-OtherSetting-Configuration-Api Compatibility Level

至此百度语音SDK导入完毕,目前我自己总结了两种方式去实现语音识别的方式:

第一种是用unity的UnityWebRequest去实现,是看的一位博主的教程,链接地址是:Unity百度语音识别-CSDN博客

第二种是看官方文档以后获取SDK的接口来实现的,具体实现方式如下:

在Git上下载了SDK源码进行学习,代码里面有具体功能实现的对应接口,源码地址:GitHub - Baidu-AIP/dotnet-sdk: 百度AI开放平台 .Net SDK

下载完毕解压后如下图,从Git的说明文档上可知speech文件夹中即是语音识别的代码:

在Asr类中,找到“识别语音数据”的方法接口JObject Recognize

byte[] data:音频数据;

string format:音频格式;

int rate:采样频率;

options:语言类型,默认为1537普通话,还支持粤语、四川话、英语等,具体看官方文档介绍。

 

1.进行录音采集保存

 void StartRecord(){Debug.LogError("开始");saveAudioClip = Microphone.Start(currentDeviceName, false, recordMaxTime, recordFrequency);}

2.对录音进行转换,将音频转换为Byte文件

 

 public byte[] ConvertClipToBytes(AudioClip audioClip){float[] samples = new float[audioClip.samples];audioClip.GetData(samples, 0);short[] intData = new short[samples.Length];byte[] bytesData = new byte[samples.Length * 2];int rescaleFactor = 32767;for (int i = 0; i < samples.Length; i++){intData[i] = (short)(samples[i] * rescaleFactor);byte[] byteArr = new byte[2];byteArr = BitConverter.GetBytes(intData[i]);byteArr.CopyTo(bytesData, i * 2);}return bytesData;}

 3.转换完毕通过SDK接口发送

var result = asr.Recognize(ConvertClipToBytes(saveAudioClip),"pcm", recordFrequency,languageType);

4.将返回的数据转换为字符串,并用正则表达式提取自己想要的信息

string str = JsonConvert.SerializeObject(result, Formatting.None);if (!string.IsNullOrEmpty(str)){if (Regex.IsMatch(str, @"err_msg.:.success")){Match match = Regex.Match(str, "result.:..(.*?)..]");if (match.Success){str = match.Groups[1].ToString();}}else{str = "识别结果为空";}tex.text = str;}

完整代码如下: 

 偷懒写的代码不牢固,result在获取的时候有可能会出现NULL值,所以你们可以用Try Catch做一下容错

using System.Collections;
using System.Collections.Generic;
using System.Text.RegularExpressions;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Networking;
using System;
using Baidu.Aip.Speech;
using Newtonsoft.Json;public class Test : MonoBehaviour
{public string app_id;public string api_key;public string secret_Key;public Asr asr;string accessToken = string.Empty;int recordFrequency = 8000; //录音频率int recordMaxTime = 20;//最大录音时长AudioClip saveAudioClip;//存储当前录音的片段AudioSource source;string currentDeviceName = string.Empty;Text tex;Dictionary<string, object> languageType = new Dictionary<string, object>();// Start is called before the first frame updatevoid Start(){saveAudioClip = this.transform.GetComponent<AudioClip>();source = this.transform.GetComponent<AudioSource>();tex = GameObject.Find("Canvas/ResultTex").GetComponent<Text>();asr = new Asr(app_id, api_key, secret_Key);languageType.Add("dev_pid", 1537);}// Update is called once per framevoid Update(){if (Input.GetKeyDown(KeyCode.Space)){StartRecord();} else if (Input.GetKeyUp(KeyCode.Space)){EndRecord();}}public byte[] ConvertClipToBytes(AudioClip audioClip){float[] samples = new float[audioClip.samples];audioClip.GetData(samples, 0);short[] intData = new short[samples.Length];byte[] bytesData = new byte[samples.Length * 2];int rescaleFactor = 32767;for (int i = 0; i < samples.Length; i++){intData[i] = (short)(samples[i] * rescaleFactor);byte[] byteArr = new byte[2];byteArr = BitConverter.GetBytes(intData[i]);byteArr.CopyTo(bytesData, i * 2);}return bytesData;}/// <summary>/// 开始录音/// </summary>void StartRecord(){Debug.LogError("开始");saveAudioClip = Microphone.Start(currentDeviceName, false, recordMaxTime, recordFrequency);}/// <summary>/// 结束录音/// </summary>void EndRecord(){Debug.LogError("结束");Microphone.End(currentDeviceName);source.PlayOneShot(saveAudioClip);var result = asr.Recognize(ConvertClipToBytes(saveAudioClip),"pcm", recordFrequency,languageType);string str = JsonConvert.SerializeObject(result, Formatting.None);if (!string.IsNullOrEmpty(str)){if (Regex.IsMatch(str, @"err_msg.:.success")){Match match = Regex.Match(str, "result.:..(.*?)..]");if (match.Success){str = match.Groups[1].ToString();}}else{str = "识别结果为空";}tex.text = str;}// StartCoroutine(RequestASR());//请求语音识别}}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/28448.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(每日更新)《虚拟现实VR资讯》(Yanlz+Unity+SteamVR+云技术+5G+AI=VR云游戏=云渲染+人机交互+立钻哥哥+==)

虚拟现实&#xff08;Virtual Reality&#xff09; 虚拟现实简称VR&#xff0c;是一种可以创建和体验虚拟世界的计算机仿真系统&#xff0c;它利用计算机生成一种模拟环境&#xff0c;是一种多源信息融合的、交互式的三维动态视景和实体行为的系统仿真使用户沉浸到该环境中。 …

微软又出大招!ChatGPT将加入云服务!

点击下方卡片&#xff0c;关注“CVer”公众号 AI/CV重磅干货&#xff0c;第一时间送达 点击进入—>CV微信技术交流群 本文转载自&#xff1a;机器之心 | 编辑&#xff1a;陈萍、蛋酱 微软动作很迅速&#xff0c;继 ChatGPT 或将加入 Word、PPT、Excel 后&#xff0c;这次微软…

UE5 Oculus Quest2 使用跨平台交互语音聊天Cross-Platform Voice Chat Pro制作语音聊天功能 1

局域网多人联机 1.WidgetMenu追加UI 2. Server按钮蓝图 3.Client按钮蓝图 备注&#xff1a;目前固定了局域网服务器IP地址。有兴趣的小伙伴可自行拓展。 参考&#xff1a;

基于腾讯云实时音视频(TRTC)的web端 多人人脸识别小游戏

场景介绍 一个双人视频互动的小游戏&#xff0c; 连接后&#xff0c;可以实时看到对方的视频情况&#xff0c; 根据对方的视频情况实时进行游戏操作 摇头进行控制挡板 不让球掉落。 眨眼发球。 准备工作 获取应用 SDKAppID 和 应用秘钥 登录腾讯云 搜索 实时音视频 TRTC 创…

ChatGPT的前生: Prompting思想

Prompt的思想是语言模型通往真正大一统的关键一步 。 ChatGPT目前大火&#xff0c;然而不少人对于ChatGPT的前辈---Prompt范式却不了解。希望通过本文&#xff0c;可以让读者对Prompt范式所蕴含的思想有所了解。本文不侧重细节的讲解&#xff0c;而重点突出Prompt范式背后的思想…

使用Python机器学习预测足球比赛结果:第一篇 数据采集 (上)

利物浦7比0狂胜曼联&#xff0c;这个锅不能再让C罗背了吧。预测足球比分有什么好方法吗&#xff1f; 微信搜索关注《Python学研大本营》&#xff0c;加入读者群&#xff0c;分享更多精彩 探索足球结果和赔率的 Python 项目。 随着数据建模成为处理随机性的强大资源&#xff0…

ChatGPT、GPT4、AutoGPT 和 MemoryGPT:初学者指南

人工智能 (AI) 不仅在改变行业&#xff0c;也在改变我们的日常生活。借助人工智能&#xff0c;我们可以改善我们的组织和生产力&#xff0c;让我们能够专注于真正重要的事情。在本文中&#xff0c;我们将探讨一些适用于日常生活的 AI 工具&#xff0c;以及它们如何帮助您保持井…

《2023 大语言模型综合能力测评报告》出炉:以文心一言为代表的国内产品即将冲出重围

近日国内与人工智能领域相关的利好政策陆续释放&#xff0c;中央召开的相关会议强调“未来要重视通用人工智能发展&#xff0c;营造创新生态。”《北京市促进通用人工智能创新发展的若干措施&#xff08;2023-2025 年&#xff09;&#xff08;征求意见稿&#xff09;》围绕五大…

我用GPT干的18件事!

给大家整理了 18 种 ChatGPT 的用法&#xff0c;看看有哪些方法是你能得上的 语法更正文本翻译语言转换代码解释修复代码错误作为百科全书信息提取好友聊天创意生成器采访问题论文大纲故事创作问题类比创建 SQL 需求情感分析将产品描述转变为广告关键字提取闲聊机器人 语法更正…

指令模板:采访大纲生成 | AIGC实践

最近收获了一些朋友的谬赞&#xff0c;说我“执行力太强了”&#xff0c;可以持续输出内容。 呃&#xff0c;其实吧&#xff0c;这些素材都是从我的实际工作和生活中来的&#xff0c;只是稍加整理而已。 要说起来&#xff0c;AIGC的出现已经完全改变了我的工作方式。在遇到问题…

每日一个 ChatGPT 使用小技巧系列之4:使用 AI 工具对 SAP ABAP 代码的编写质量进行打分

本系列之前的文章&#xff1a; 与其整天担心 AI 会取代程序员&#xff0c;不如先让 AI 帮助自己变得更强大 每日一个 ChatGPT 使用小技巧系列之1 - 给出提纲或者素材&#xff0c;让 ChatGPT 帮你写作 每日一个 ChatGPT 使用小技巧系列之2 - 用 ChatGPT 研读 SAP ABAP BAPI 的…

Vue中render函数浅浅详解

render介绍 众所周知&#xff0c;仅限于我大前端&#xff0c;Vue中的核心就是虚拟DOM。 通常我们都会把我们的页面结构逻辑都写在 template 中&#xff0c;然后再通过vue将我们的代码转换成虚拟DOM&#xff0c;相比于真实DOM&#xff0c;虚拟DOM是通过js代码处理的&#xff0c;…

Android 期末text的 浅浅复习

Android 编程题text 文章目录 前言一.预测编程题11.代码解析2.具体代码 二.预测编程题21.代码解析2.具体代码 三.预测编程题31.代码解析2.具体代码 四.预测编程题41.代码解析2.具体代码 五.预测编程题51.代码解析2.具体代码 六.预测编程题61.代码解析2.具体代码 总结 前言 个人…

浅浅地讲一下引用吧

文章目录 &#x1f384; 前言&#x1f496; 何为引用&#x1f37a;深入理解引用✈️取别名规则&#xff1a;权限只能缩小不能放大 &#x1f601; 引用的简单应用&#x1f699; 引用和指针的区别&#x1f389;结语 &#x1f384; 前言 开启C之路&#xff0c;希望看了这篇文章之…

浅浅理解.net core的路由

路由&#xff1a; web的请求到达后端服务时&#xff0c;controller(控制器)会处理传入的http请求并响应用户操作&#xff0c;请求的url会被映射到控制器的操作方法上。 此映射过程由应用程序中定义的路由规则完成。 ASP.NET.Core MVC中的路由 路由使用一对由UseRouting和UseEnd…

FPGA图像处理 浅浅浅浅浅记

FPGA因其并行处理数据、高速和可编程等特性在图像处理方面得到广泛应用&#xff0c;特别是在简单算法的时候&#xff0c;即图像处理的预处理时&#xff0c;可以通过一些FPGA开发公司所配置的软件进行对算法的实现。 Vivado的一个工具&#xff1a;System Generator 可以直接把…

UCOS(浅浅忆)

UCOS 简介UCOSIIUCOSII 移植 F1UCOSII 任务UCOSII 消息邮箱、信号量 简介 1、实时操作系统分为硬实时和软实时两类 2、UCOSII、UCOSIII的区别 1、UCOSIII新增功能 1.1 同时支持优先级与时间片调度算法 1.2 将中断任务调节交给系统任务处理&#xff0c;大大缩短中断执行时间 1…

浅浅的聊一下 WebSocket

浅浅的聊一下 WebSocket 第一次看到 ws:// 和 wss:// 时候&#xff0c;感觉好高级啊&#xff0c;还有这种协议。 Websocket 历史 WebSocket是在2008年6月诞生的1。经由IEFT标准化后&#xff0c;2009年chrome 4第一个提供了该标准支持&#xff0c;并默认启用。于2011年由IEFT标…

中关村科金张杰:ChatGPT火爆背后,对话式AI在企业服务场景面临三大挑战|MEET2023...

梦晨 发自 凹非寺量子位 | 公众号 QbitAI ChatGPT火爆&#xff0c;也让更多人看到对话式AI的商业价值。 根据艾瑞咨询发布的《2022年中国对话式AI行业发展白皮书》&#xff0c;2021年对话式AI的市场规模为45亿元&#xff0c;带动规模126亿元。 在MEET2023智能未来大会上&#x…