Unity 语音转文字

这篇具有很好参考价值的文章主要介绍了Unity 语音转文字。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. Window 自带的微软语音识别

参考官方手册:Windows.Speech.DictationRecognizer - Unity 脚本 API (unity3d.com)

这个中英识别都比较准确,不过应该只支持Win10以上。

需在设置里开启在线语音识别。

unity 语音转文字,Unity,语音识别,人工智能,unity

 代码部分:

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.UI;
using UnityEngine.Windows.Speech;

public class DictationScript : MonoBehaviour
{
    public Text hypothesesText;//显示输入过程中猜想结果的
    public Text recognitionsText;//显示识别结果的
    public Button startBtn;
    public Button stopBtn;

    private DictationRecognizer dictationRecognizer;

    void Start()
    {
        dictationRecognizer = new DictationRecognizer();

        dictationRecognizer.DictationResult += OnDictationResult;
        dictationRecognizer.DictationHypothesis += OnDictationHypothesis;
        dictationRecognizer.DictationComplete += OnDictationComplete;
        dictationRecognizer.DictationError += OnDictationError;

        //dictationRecognizer.Start();
        startBtn.onClick.AddListener(DictationStart);
        stopBtn.onClick.AddListener(DictionStop);
    }

    private void OnDestroy()
    {
        dictationRecognizer.Stop();
        dictationRecognizer.Dispose();
    }

    /// <summary>
    /// 语音识别结果
    /// </summary>
    /// <param name="text">识别结果</param>
    /// <param name="confidence"></param>
    private void OnDictationResult(string text, ConfidenceLevel confidence)
    {
        Debug.LogFormat("识别结果: {0}", text);
        recognitionsText.text = text;

        DictionStop();//我是希望得到结果就自动停止输入
    }

    /// <summary>
    /// 语音输入过程中对结果猜想时触发的事件。
    /// </summary>
    /// <param name="text">识别猜想</param>
    private void OnDictationHypothesis(string text)
    {
        Debug.LogFormat("识别猜想: {0}", text);
        hypothesesText.text = text;
    }

    private void OnDictationComplete(DictationCompletionCause cause)
    {
        if (cause != DictationCompletionCause.Complete)
            Debug.LogErrorFormat("识别失败: {0}.", cause);
    }

    private void OnDictationError(string error, int hresult)
    {
        Debug.LogErrorFormat("识别错误: {0}; HResult = {1}.", error, hresult);
    }

    /// <summary>
    /// 开启听写识别会话
    /// </summary>
    public void DictationStart()
    {
        dictationRecognizer.Start();
        startBtn.gameObject.SetActive(false);
        stopBtn.gameObject.SetActive(true);
    }

    /// <summary>
    /// 结束听写识别会话
    /// </summary>
    public void DictionStop()
    {
        dictationRecognizer.Stop();
        startBtn.gameObject.SetActive(true);
        stopBtn.gameObject.SetActive(false);
    }

}

2. 百度SDK

也可以考虑其他平台的SDK,我只测试了百度的,这个英文识别不大好(最起码Unity识别不出来,IPad可以识别出来),上面那个中英识别都不错,不过只支持Window,百度的这个我也没测试其他平台,自行测试吧。

官方文档:https://ai.baidu.com/ai-doc/SPEECH/ilbxfvpau

  1. 在百度智能云控制台创建一个应用,勾上短语音识别
  2. 下载C# SDK:https://ai.baidu.com/sdk#asr
  3. 将SDK 放入Unity中Plugins文件夹下

然后直接上代码吧文章来源地址https://www.toymoban.com/news/detail-720869.html

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Baidu.Aip.Speech;
using UnityEngine.UI;

public class BaiduSpeech : MonoBehaviour
{
    public Text text;//显示结果用的

    // 设置APPID/AK/SK
    string APP_ID = "你的 AppID";
    string API_KEY = "你的 API Key";
    string SECRET_KEY = "你的 Secret Key";

    int rate = 8000;

    Asr client;
    AudioSource aud;
    int audioLength;//录音的长度

    private void Awake()
    {
        if (GetComponent<AudioSource>() == null)
            aud = gameObject.AddComponent<AudioSource>();
        else
            aud = gameObject.GetComponent<AudioSource>();
        aud.playOnAwake = false;
    }
    // Start is called before the first frame update
    void Start()
    {
        client = new Asr(APP_ID, API_KEY, SECRET_KEY);
        client.Timeout = 60000;  // 修改超时时间
    }

    /// <summary>
    /// 开始录音
    /// </summary>
    public void StartMic()
    {
        if (Microphone.devices.Length == 0) return;
        Microphone.End(null);
        Debug.Log("Start");
        aud.clip = Microphone.Start(null, false, 10, rate);
    }

    /// <summary>
    /// 结束录音
    /// </summary>
    public void EndMic()
    {
        int lastPos = Microphone.GetPosition(null);
        if (Microphone.IsRecording(null))
            audioLength = lastPos / rate;//录音时长  
        else
            audioLength = 10;
        Debug.Log("Stop");
        Microphone.End(null);

        AsrData(GetClipData());
    }

    /// <summary>
    /// 把录音转换为Byte[]
    /// </summary>
    /// <returns></returns>
    public byte[] GetClipData()
    {
        if (aud.clip == null)
        {
            Debug.LogError("录音数据为空");
            return null;
        }

        float[] samples = new float[aud.clip.samples];
        aud.clip.GetData(samples, 0);

        byte[] outData = new byte[samples.Length * 2];
        int rescaleFactor = 32767; //to convert float to Int16   
        for (int i = 0; i < samples.Length; i++)
        {
            short temshort = (short)(samples[i] * rescaleFactor);

            byte[] temdata = System.BitConverter.GetBytes(temshort);

            outData[i * 2] = temdata[0];
            outData[i * 2 + 1] = temdata[1];
        }
        if (outData == null || outData.Length <= 0)
        {
            Debug.LogError("录音数据为空");
            return null;
        }

        return outData;
    }

    // 识别本地文件
    public void AsrData(byte[] data)
    {
        // 可选参数
        var options = new Dictionary<string, object>
        {
            {"dev_pid", 1537}
        };
        client.Timeout = 120000; // 若语音较长,建议设置更大的超时时间. ms
        var result = client.Recognize(data, "pcm", rate, options);
        if (result["result"] != null)
        {
            text.text = result["result"][0].ToString();
        }
        else
        {
            Debug.Log("识别错误");
        }
        Debug.Log(result);
    }

}

到了这里,关于Unity 语音转文字的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 第14章-Python-人工智能-语言识别-调用百度语音识别

            百度语音识别API是可以免费试用的,通过百度账号登录到百度智能云,在语音技术页面创建的应用,生成一个语音识别的应用,这个应用会给你一个APIKey和一个Secret Key,如图14.1所示。  我们在自己的程序中用 API Key 和 Secret Key 这两个值获取 Koken,然后再通过 Token 调

    2024年02月08日
    浏览(40)
  • 人工智能-语音识别技术paddlespeech的搭建和使用

    PaddleSpeech是百度飞桨(PaddlePaddle)开源深度学习平台的其中一个项目,它基于飞桨的语音方向模型库,用于语音和音频中的各种关键任务的开发,包含大量基于深度学习前沿和有影响力的模型。PaddleSpeech支持语音识别、语音翻译(英译中)、语音合成、标点恢复等应用示例。

    2024年02月02日
    浏览(40)
  • 语音识别与VC维:改变人工智能的未来

    语音识别(Speech Recognition)是一种人工智能技术,它旨在将人类的语音信号转换为文本或其他形式的数据。这项技术在过去几年中得到了巨大的发展,并成为人工智能领域的一个关键技术。VC维(Vocabulary Coverage Dimension)是一种数学模型,用于描述语言模型的表达能力。在本文中,

    2024年02月19日
    浏览(44)
  • 【人工智能】科大讯飞语音识别应用开发(第三集)

    这次需要对科大讯飞语音识别接口进行语音识别应用开发,前两次都是通过WebAPI调用接口,这次换一下,通过SDK调用接口 下面是开发的详细记录过程(基于前两次的基础上) 网址:https://www.xfyun.cn/services/voicedictation 不领服务量为500且该包免费( 貌似是不同应用都可以免费领

    2024年02月13日
    浏览(37)
  • OpenAI的人工智能语音识别模型Whisper详解及使用

            拥有ChatGPT语言模型的OpenAI公司,开源了 Whisper 自动语音识别系统,OpenAI 强调 Whisper 的语音识别能力已达到人类水准。         Whisper是一个通用的语音识别模型,它使用了大量的多语言和多任务的监督数据来训练,能够在英语语音识别上达到接近人类水平的鲁

    2024年02月09日
    浏览(42)
  • 构建基于AWSLambda的人工智能应用:语音识别、图像识别和自然语言处理

    作者:禅与计算机程序设计艺术 在人工智能领域,用大数据、机器学习等方法来解决复杂的问题,已经成为越来越多企业和开发者关注的问题。但是,如何把这些方法落地到生产环境中,仍然是一个难题。 随着云计算平台的广泛普及,AWS Lambda作为一项服务正在成为各个公司

    2024年02月09日
    浏览(53)
  • AI人工智能课题:通用场景文字识别系统的设计与实现(基于百度智能云AI接口)

     博主介绍 :黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程,免费 项目配有对应开发文档、开题报告、任务书、

    2024年02月05日
    浏览(54)
  • AI人工智能课题:教育场景文字识别系统的设计与实现(基于百度智能云AI接口)

     博主介绍 :黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程,免费 项目配有对应开发文档、开题报告、任务书、

    2024年02月04日
    浏览(34)
  • AI人工智能课题:财务票据文字识别系统的设计与实现(基于百度智能云AI接口)

     博主介绍 :黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程,免费 项目配有对应开发文档、开题报告、任务书、

    2024年02月04日
    浏览(44)
  • AI人工智能课题:交通场景文字识别系统的设计与实现(基于百度智能云AI接口)

     博主介绍 :黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程,免费 项目配有对应开发文档、开题报告、任务书、

    2024年02月04日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包