Bing Speech微软必应语音认知服务-文字语音互转

本项目使用 Bing Speech APIBot FrameworkLUIS 实现在Unity内的中文语音文字互转,还可以在UWP应用完成语义分析。


1.添加必应语音 API 到你的订阅,地址 ,点击创建,并获取API密钥


2.修改 SpeechManager.cs的Subscription Key;


3.进入 LUIS管理后台 ,新增LUIS App  

4、获取 LUIS App Id 和 LUIS Endpoint Key 





5.修改SpeechToText.cs的App Id


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using System.IO;
using System;public class TextToSpeech : Singleton<TextToSpeech>
{private static string SSML = "<speak version='1.0' xml:lang='zh-CN'><voice xml:lang='zh-CN' xml:gender='Male' name='Microsoft Server Speech Text to Speech Voice (zh-CN, Kangkang, Apollo)'>{0}</voice></speak>";AudioSource audioSource;public InputField inputText;// Use this for initializationvoid Start () {audioSource = gameObject.GetComponent<AudioSource>();}// Update is called once per framevoid Update () {}/// <summary>/// 使用bing speech api,将文字转为中文语音/// </summary>/// <param name="text"></param>/// <returns></returns>public IEnumerator<object> TextToAudio(string text){string requestUri = "https://speech.platform.bing.com/synthesize";byte[] buffer = System.Text.Encoding.UTF8.GetBytes(string.Format(SSML, text));var headers = new Dictionary<string, string>() {{ "Authorization", "Bearer " + SpeechManager.Instance.GetToken() },{ "Content-Type", @"application/ssml+xml" },{ "X-Microsoft-OutputFormat", @"riff-16khz-16bit-mono-pcm"},{ "X-Search-AppId", Guid.NewGuid().ToString().Replace("-", "")},{ "X-Search-ClientID", Guid.NewGuid().ToString().Replace("-", "")},{ "User-Agent", "TTSHololens"}};audioSource.Stop();WWW www = new WWW(requestUri, buffer, headers);yield return www;audioSource.clip = www.GetAudioClip(false, true, AudioType.WAV);audioSource.Play();}public void SpeakText(string text){StartCoroutine(TextToAudio(text));}public void SpeakText(){StartCoroutine(TextToAudio(inputText.text));}
}

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.IO;
using System;
using BotClient;
using UnityEngine.UI;
#if WINDOWS_UWP
using System.Threading.Tasks;
#endifpublic class SpeechToText :Singleton<SpeechToText>
{public int messageLength = 3;      //录音时间,单位:秒private bool recording = false;private static string deviceName = string.Empty;  //microphone设备名称private int samplingRate;          //采样率private AudioClip audioClip;BotService botService;private AudioSource audioSource;void Start () {int unUsed;Microphone.GetDeviceCaps(deviceName, out unUsed, out samplingRate);botService = new BotService();audioSource = gameObject.GetComponent<AudioSource>();
#if WINDOWS_UWPbotService.StartConversation();
#endif}void Update () {if (recording && !Microphone.IsRecording(deviceName)){RecordStop();}}public bool IsRecording(){return recording;}/// <summary>/// 使用Bing Speech API,将语音文件转成text/// </summary>/// <param name="filepath"></param>/// <returns></returns>private IEnumerator<object> AudioToText(string filepath){string requestUri = "https://speech.platform.bing.com/recognize";requestUri += @"?scenarios=smd";requestUri += @"&appid=xxxxxxxxxxxxxxxxxxxxxxxxxxxxx";//你的APP ID.requestUri += @"&locale=zh-CN";requestUri += @"&device.os=win10";requestUri += @"&version=3.0";requestUri += @"&format=json";requestUri += @"&instanceid=565D69FF-E928-4B7E-87DA-9A750B96D9E3";requestUri += @"&requestid=" + Guid.NewGuid().ToString();FileStream fs = null;using (fs = new FileStream(filepath, FileMode.Open, FileAccess.Read)){byte[] buffer = null;buffer = new Byte[(int)fs.Length];fs.Read(buffer, 0, buffer.Length);var headers = new Dictionary<string, string>() {{ "Authorization", "Bearer " + SpeechManager.Instance.GetToken()},{ "Content-Type", @"audio/wav; codec=""audio/pcm""; samplerate=16000" }};WWW www = new WWW(requestUri, buffer, headers);yield return www;try{string result = www.text;JSONObject jsonObj = new JSONObject(result);string resultStr = jsonObj.GetField("header").GetField("name").str;resultStr = TrimResultStr(resultStr);SpeechContronller.Instance.SetResponseText("口令:" + resultStr);TextToSpeech.Instance.SpeakText(resultStr);SpeechContronller.Instance.tipText.text ="";
#if WINDOWS_UWPSendMessage(resultStr);
#endif}catch{SpeechContronller.Instance.tipText.text="对不起,没听清";TextToSpeech.Instance.SpeakText("对不起,没听清");}}}//使用BotService进行语义分析(uwp平台执行)
#if WINDOWS_UWPprivate async void SendMessage(string message){string result = "对不起,无法回答您的问题";if (await botService.SendMessage(message)){ActivitySet messages = await botService.GetMessages();if (messages != null){for (int i = 1; i < messages.activities.Length; i++){result = messages.activities[i].text;}}}UnityEngine.WSA.Application.InvokeOnAppThread(() =>{//把返回的文字读出来TextToSpeech.Instance.SpeakText(result);}, false); } 
#endif/// <summary>/// 对Speech API返回的结果进行处理,去除最后的句号,防止影响结果/// </summary>/// <param name="result"></param>/// <returns></returns>private string TrimResultStr(string result){string resultStr = result;if (resultStr != null){int index = resultStr.LastIndexOf("。");if (index > 0){resultStr = resultStr.Remove(index, 1);}}return resultStr;}/// <summary>/// 开始录音/// </summary>public void Record(){recording = true;audioSource.Stop();SpeechContronller.Instance.SetMicrophoneIcon(true);SpeechContronller.Instance.SetTipText("正在聆听中");SpeechContronller.Instance.SetResponseText("");if (Microphone.IsRecording(deviceName)){return;}audioClip = StartRecording();}/// <summary>/// 停止录音,将语音保存成文件/// </summary>public void RecordStop(){recording = false;SpeechContronller.Instance.SetMicrophoneIcon(false);SpeechContronller.Instance.SetTipText("思考中,请稍候");StopRecording();string filename = "myfile.wav";var filepath = Path.Combine(Application.persistentDataPath, filename);SavWav.Save(filename, audioClip);StartCoroutine(AudioToText(filepath));}/// <summary>/// 开始录音/// </summary>/// <returns></returns>private AudioClip StartRecording(){return Microphone.Start(deviceName, false, messageLength, 16000);}/// <summary>/// 停止录音/// </summary>private void StopRecording(){if (Microphone.IsRecording(deviceName)){Microphone.End(deviceName);}}
}

 

工程文件地址

http://download.csdn.net/download/shanguuncle/9967050

参考资料

Bing Speech API文档
Bot Framework API文档



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

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

相关文章

怎么把录音转成文字?试试这几个录音转文字软件

在工作学习中&#xff0c;我们常常会将一些比较重要的事项录音下来&#xff0c;方便后续的整理记录。借助录音转文字软件&#xff0c;将录音内容快速转换识别为文字&#xff0c;可以让我们省时省力、提高工作效率。那有哪些录音转文字软件呢&#xff1f;今天就给大家介绍几款录…

知乎热议 如何利用ChatGPT搞科研?

学术志 2023-05-27 21:15 发表于北京 来源&#xff1a;QbitAI、量子位、知乎 编辑&#xff1a;学妹 △ 扫码加老师进入【AI学术交流群】 这位研究僧&#xff0c;GPT-4都发布了&#xff0c;你还在纯人工搞科研吗&#xff1f; 已经有人实测&#xff1a; ChatGPT科研全流程都能用…

WormGPT: 「邪恶版」ChatGPT的道德问题和威胁

WormGPT: 「邪恶版」ChatGPT的道德问题和威胁 摘要 本论文讨论了一款名为WormGPT的「邪恶版」ChatGPT的出现&#xff0c;并探讨了这种恶意AI模型所带来的道德问题和数据安全威胁。WormGPT是一个由黑客设计的&#xff0c;能够生成恶意软件的聊天机器人。该论文着重于分析WormGP…

贡献度分析

由来&#xff1a;依据帕累托分析中的帕累托法则&#xff08;有兴趣的话可以自己百度一下&#xff09;。在公司运营中&#xff0c;80%的利润常常来自于20%最畅销的产品&#xff0c;而其他80%的产品只产生了20%的利润。 因此&#xff0c;要想提高利润的话就要从80%那一大部分的利…

ChatGPT - 通过测试强化学习

文章目录 Prompt Prompt 我目前正在学习[主题]。问我一系列问题&#xff0c;以测试我的知识。确定我的答案中的知识差距&#xff0c;并给我更好的答案来填补这些差距好的&#xff0c;下面是每个问题的答案和进一步的解释&#xff1a;1. 什么是Kafka&#xff1f; Kafka是一个分…

IIS发布.net6 api+微信小程序/H5真机调试接口的流程

我们创建.net6 api程序&#xff0c;然后使用SqlSugar连接MySQL数据库&#xff0c;再使用iis发布&#xff0c;当然使用其他的也行。再开发一个微信小程序&#xff0c;手机运行小程序&#xff0c;手机运行H5&#xff0c;都可以看到数据库的数据&#xff0c;就是这么一个流程。 开…

鸡兔同笼问题 ← C语言实现

【问题描述】 今有雉兔同笼&#xff0c;上有三十五头&#xff0c;下有九十四足&#xff0c;问雉兔各几何&#xff1f; ------《孙子算经》 【解题思路】 假设都是“兔…

达达兔网站服务器是哪里,达达兔影院网官网

达达兔是一款掌上的影院&#xff0c;你可以在这里收看到不同的影视作品&#xff0c;更多的影视作品离线在线都可以看&#xff0c;经典的&#xff0c;新颖的&#xff0c;喜爱看电影追剧的朋友绝对不能错过的一款app&#xff0c;全网优质的影视轻松观看&#xff0c;享受精彩的剧集…

兔子,撒币

作为最硬核的你兔老大&#xff0c;我狠起来连自己都骂 一、原力第一 哈哈当然不是骂自己啦哈哈&#xff0c;其实是最近csdn出了一个活动&#xff1a;原力计划s3&#xff0c;弄得我现在整天想着&#xff0c;给你们发钱。发书。发资料。 对&#xff0c;就是这个玩意&#xff1a…

虚假新闻检测论文调研

虚假新闻检测论文调研 Evidence Inference Networks for Interpretable Claim Verification 基本信息 发表刊物和年份&#xff1a;2021 AAAI 摘要 现有方法的缺点 现有的方法构造了适当的交互模型&#xff08;文本与文本&#xff0c;文本与评论&#xff0c;文本与社交网络…

虚假新闻识别检测分类

虚假新闻检测 一、项目主题 ​ 针对媒体出现的虚假新闻和真实新闻进行检测识别。 ​ 动机&#xff1a;在这个社交媒体和互联网的世界中&#xff0c;我们接触到各种新闻和文章&#xff0c;但其中一些新闻和文章是假的&#xff0c;是为了好玩或出于恶意而制作的&#xff0c;这…

CIKM 2020 | FANG:利用社会语境及其图表示进行假新闻检测

目录 前言1. 问题定义2. 从social context中构建图3. 事实新闻图框架 (FANG)3.1 表示学习3.2 时序建模3.3 损失函数 4. 实验4.1 数据集4.2 实验结果 5. 讨论5.1 数据集大小的限制5.2 时序建模的意义5.3 可扩展性 6. 总结 前言 题目&#xff1a; FANG: Leveraging Social Contex…

一文看懂虚假新闻检测(附数据集 论文推荐)

作者丨孙子荀 单位丨腾讯科技高级研究员 研究方向丨多模态内容质量 本人过去几年一直从事内容质量方面的算法工作&#xff0c;近期出于兴趣对假新闻这个问题做了一些调研&#xff0c;简单总结一下提供读者参考。 在某种程度上假新闻的是一个微观领域问题&#xff0c;它和谣言分…

独家 | 社交媒体假新闻检测方法及发展方向(附数据集)

作者&#xff1a;Kai Shu and Huan Liu from Arizona State University 翻译&#xff1a;窦英通 本文长度为2000字&#xff0c;建议阅读5分钟 本文为你介绍社交媒体假新闻的描述和检测及未来研究方向。 社交媒体对新闻传播是一把双刃剑。一方面&#xff0c;它成本低廉&#xf…

论文阅读-虚假信息检测综述 - Fake News Detection on Social Media: A Data Mining Perspective

论文链接&#xff1a;https://arxiv.org/pdf/1708.01967.pdf 目录 摘要 1 引言 2. 假新闻定义 2.1 假新闻的定义 2.2 传统新闻媒体上的假新闻 2.3社交媒体上的假新闻 3.假新闻检测 3.1问题定义 3.2 特征提取 3.2.1 新闻内容特征 3.2.2 社会语境特征 3.3 模型构建 …

论文阅读-社交媒体上的谣言检测:数据集、方法和机会

论文链接&#xff1a;https://aclanthology.org/D19-5008.pdf 目录 摘要 引言 1.1谣言检测 1.2 问题陈述 1.3 用户立场 2 数据集和评估指标 2.1 数据集 2.2 评价指标 3 特点和方法 3.1使用内容信息的方法 3.2 利用用户信息的方法 3.3 基于传播路径和网络的方法 3.4…

说说Android桌面(Launcher应用)背后的故事(大结局)——让Widget拥有Application同等的待遇

前一篇中,演示了如何开发一个Widget以及如何开发一个WidgetHost应用。有了这个基础&#xff0c;我们就知道&#xff0c;要想在桌面上添加Widget&#xff0c;那么需要完成两件事情&#xff1a; 1、将桌面应用实现为一个WidgetHost应用 2、CellLayout需要为每个添加的Widget分配…

Android 系统桌面 App —— Launcher 开发

文章目录 Launcher简介注册AndroidManifest使用PackageManager扫描所有app显示app信息&#xff0c;添加点击事件 Launcher简介 Launcher就是Android系统的桌面&#xff0c;它也是一个app&#xff0c;用于管理其他的app。 注册AndroidManifest 要让app作为Launcher&#xff0…

Android 4.0 Launcher2源码分析——桌面快捷图标的拖拽

本文来自http://blog.csdn.net/chenshaoyang0011 转载请申明文章出处&#xff01; 通过上一篇文章Android4.0Launcher2源码分析&#xff08;五&#xff09;——Workspace的滑动中&#xff0c;已经了解了Launcher的ViewTree中各层所负责的工作&#xff0c;在DragLayer中就负责对…