【零基础入门unity游戏开发——进阶篇】Unity Microphone类处理麦克风相关信息,录制音频并实时处理或保存录制的音频数据

news2025/3/13 6:04:47

考虑到每个人基础可能不一样,且并不是所有人都有同时做2D、3D开发的需求,所以我把 【零基础入门unity游戏开发】 分为成了C#篇、unity通用篇、unity3D篇、unity2D篇

  • 【C#篇】:主要讲解C#的基础语法,包括变量、数据类型、运算符、流程控制、面向对象等,适合没有编程基础的同学入门。
  • 【unity通用篇】:主要讲解unity的基础通用的知识,包括unity界面、unity脚本、unity资源管理、unity动画、unity摄像机等,适合unity初学者入门。
  • 【unity3D篇】:主要讲解unity3D的知识,unity3D角色、unity3D物理系统、unity3D光照等,适合只想做2D游戏的开发者学习。
  • 【unity2D篇】unity2D篇:主要讲解unity2D的知识,包括unity2D角色、unity2D物理系统、unity2D光照等,适合只想做3D游戏的开发者学习。

这样方便大家按需选择性的去学习,比如有编程基础的大概率可以直接从unity通用篇开始入门,没有编程基础的建议从C#篇开始学习。只想做2D游戏的话,可以直接从unity2D篇开始学习,3D篇大概率就不需要看了,节约学习时间成本。

文章目录

  • 一、Microphone 的基本功能
  • 二、使用 Microphone 的步骤
    • 1、获取麦克风设备列表
    • 2、开始录制音频
    • 3、结束录制并播放音频
    • 4、获取录制的音频数据
    • 4、实时处理音频数据
  • 三、完整示例
  • 专栏推荐
  • 完结

一、Microphone 的基本功能

在 Unity 中,Microphone 类提供了访问设备麦克风的功能,允许你录制音频并实时处理或保存录制的音频数据。

Microphone 类的主要功能包括:

  • 获取麦克风设备列表:获取当前设备上可用的麦克风列表。

  • 开始录制:从麦克风录制音频数据。

  • 停止录制:停止录制音频。

  • 获取音频数据:获取录制的音频数据并保存或处理。

二、使用 Microphone 的步骤

1、获取麦克风设备列表

使用 Microphone.devices 属性可以获取当前设备上可用的麦克风列表。

using UnityEngine;

public class MicrophoneTest : MonoBehaviour
{
   
    void Start()
    {
   
        // 获取所有可用的麦克风设备
        string[] devices = Microphone.devices;

        if (devices.Length == 0)
        {
   
            Debug.Log("没有找到麦克风设备!");
        }
        else
        {
   
            foreach (string device in devices)
            {
   
                Debug.Log("麦克风设备: " + device);
            }
        }
    }
}

2、开始录制音频

使用 Microphone.Start 方法可以从指定的麦克风设备开始录制音频,返回一个AudioClip音频文件可以用来存储。你可以传递以下参数:

  • 设备名称(为空时使用默认设备)
  • 是否循环录制(设置为 false 时,录制达到指定时长后停止)
  • 录制时长(单位:秒)
  • 采样率(通常为 44100
AudioClip recordedClip; // 用于存储录制的音频数据

//按下空格键开始录制
if (Input.GetKeyDown(KeyCode.Space))
{
   
    // 获取第一个麦克风设备
    selectedDevice = Microphone.devices[0];

    // 开始录制
    recordedClip = Microphone.Start(null, true, 10, 44100);

    if (recordedClip == null)
    {
   
        Debug.Log("录制失败!");
    }
    else
    {
   
        Debug.Log("开始录制...");
    }
}

3、结束录制并播放音频

在录制完成后,使用 Microphone.End 方法可以停止录制音频,并将录制的音频数据加载到 AudioSource 中进行播放。

//抬起空格键结束录制
if (Input.

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

在终端中用code命令打开vscode并加载当前目录了

注册code命令 启动 VSCode 编辑器,按 shift command p输入 shell command,选择 Install ‘code’ command in PATH 选项, 安装code 命令 此操作会把 code 命令添加到系统的环境变量里。 打开 iTerm2 终端 在 iTerm2 中,cd 代码库根目录, …

ESMFold对决AlphaFold:蛋白质-肽相互作用预测的新进展

今天向大家介绍的这篇文章题目为:“Protein−Peptide Docking with ESMFold Language Model”,近期发表在JCTC上。 本文主要研究 ESMFold 语言模型在蛋白质-肽对接中的应用。通过探索多种对接策略,评估其在预测蛋白质-肽相互作用方面的性能&a…

win终端添加git-bash,支持linux的shell语法

git的git-bash支持很多linux的语法,比如ll,rm等等,用着很方便,比cmd、ps用着习惯 点击下箭头,设置 添加新配置 配置 地址为git地址\bin\bash.exe,不要用根目录的git-bash.exe,这个会打开新弹窗后…

wpf中DataGrid组件每一行的背景色动态变化

背景描述:存在多个轧辊,其中有的轧辊是成对的,成对的辊ROLL_NO这个变量的值相同,有的轧辊是单个暂时没有配对的。成对的辊北京颜色交替突出显示,单个辊不需要设置背景色。 实现: 换辊的时候给成对的辊分配相…

002-告别乱码-libiconv-C++开源库108杰

本课文包含三个视频! 为什么中文版Windows是编程出现乱码的高发地带?怎么用 libiconv 把国标编码的汉字转换成宇宙统一码?怎么简化 libiconv 那些充满坑的 纯C 函数API? 1. 安装 libiconv 通常,你在 MSYS2 中安装过 G…

DeepSeek赋能智慧交通:城市交通流量智能预测与优化,开启智能出行新时代

在数字化转型的浪潮中,智慧交通正成为提升城市运行效率、改善居民出行体验的关键领域。 DeepSeek作为人工智能领域的前沿技术,凭借其强大的数据分析、智能决策和多模态交互能力,正在为智慧交通注入新的活力,推动交通管理从“经验…

Token登录授权、续期和主动终止的方案(Redis+Token(非jwtToken))

1、RedisToken方案的授权 1.1 基本原理 登录后使用UUID生成token,前端每次请求都会带上这个token作为授权凭证。这种方案是能自动续签,也能做到主动终止。所以很多项目用的都是RedisToken方案,简单方便问题少。缺点就是需要依赖Redis和数据…

强大的数据库DevOps工具:NineData 社区版

本文作者司马辽太杰, gzh:程序猿读历史 在业务快速变化与数据安全日益重要的今天,生产数据库变更管理、版本控制、数据使用是数据库领域的核心挑战之一。传统的解决方式往往采用邮件或即时通讯工具发起审批流程,再通过堡垒机直连数…

【动态规划篇】1137. 第 N 个泰波那契数

前言: 动态规划问题一般分为五步: 先确定一个状态表示根据状态表示来推导状态方程初始化填表顺序返回值 ①状态表示 先创建一个以为数组,起名为dp,这个一维数组就叫做dp表 把dp表填满,填满后的某个值就是我们想要的结果状态表…

网络信息安全专业(710207)网络安全攻防实训室建设方案

一、引言 随着信息技术的飞速发展,网络空间安全已成为国家安全的重要组成部分,对网络信息安全专业人才的需求日益增长。为满足网络信息安全专业(专业代码710207)的教学需求,提升学生在网络安全攻防领域的实践能力&…

【Linux】:线程池

朋友们、伙计们,我们又见面了,本期来给大家带来线程池相关的知识点,如果看完之后对你有一定的启发,那么请留下你的三连,祝大家心想事成! C 语 言 专 栏:C语言:从入门到精通 数据结构…

共享内存(System V)——进程通信

个人主页:敲上瘾-CSDN博客 进程通信: 匿名管道:进程池的制作(linux进程间通信,匿名管道... ...)-CSDN博客命名管道:命名管道——进程间通信-CSDN博客 目录 一、共享内存的原理 二、信道的建立 …

ctfhub-HTTP协议

请求方式 它要我们使用CTF**B Method,其实就是ctfhub方式 我们直接抓包试一试,把GET改成CTFHUB,在发送到repeater 在repeater处点击发送,得到响应 302跳转 点击“give me flag"没有任何变化,我们抓个包试试 我们把它发送到repeater&…

【TMS570LC4357】之工程创建

备注:具体资料请在官网海淘.TMS570LC4357资料 在线文档Hercules Safety MCU Resource Guide — Hercules Safety MCUs Documentation XDS100 Debug Probe (ti.com) Git https://git.ti.com/git/hercules_examples/hercules_examples.git https://git.ti.com/cgit/h…

一种改进的Estimation-of-Distribution差分进化算法

为了充分利用差分进化(DE)的强大开发和estimation-of-distribution算法(EDA)的强大探索,提出了一种混合estimation-of-distribution算法的改进差分进化IDE-EDA。首先,提出了一种新的协同进化框架&#xff0…

[数据结构]排序之希尔排序( 缩小增量排序 )

希尔排序法又称缩小增量法。希尔排序法的基本思想是: 先选定一个整数,把待排序文件中所有记录分成个 组,所有距离为的记录分在同一组内,并对每一组内的记录进行排序。然后,取,重复上述分组和排序的工 作。当…

进程(下)【Linux操作系统】

文章目录 进程的状态R状态:S状态:D状态:T状态t状态Z状态:孤儿进程X状态: 进程的优先级如果我们要修改一个进程的优先级重置进程优先级 进程切换进程的调度 进程的状态 在内核中,进程状态的表示&#xff0c…

Insar结合ISCE2,某一个文件进行并行-stackSentinel.py

stackSentinel.py 依次执行 run_01 到 run_15,记录各自的日志 并行执行 run_16 里的所有命令,仍然记录日志 不知道对不对,测试的时间有点长就给停了 #!/bin/bash# ✅ 适用于 WSL/Linux runfiles_path"/mnt/e/insar_order_test/Stack…

2.2.3 TCP—UDP-QUIC

文章目录 2.2.3 TCP—UDP-QUIC1. TCP如何做到可靠性传输1. ACK机制2. 重传机制3. 序号机制4. 窗口机制5. 流量机制6. 带宽机制 2. tcp和udp如何选择1. tcp和udp格式对比2. ARQ协议(Automatic Repeat reQuest,自动重传请求)1. ARQ协议的主要类…

【Golang】第一弹-----初步认识GO语言

笔上得来终觉浅,绝知此事要躬行 🔥 个人主页:星云爱编程 🔥 所属专栏:Golang 🌷追光的人,终会万丈光芒 🎉欢迎大家点赞👍评论📝收藏⭐文章 一、Go语言的简单介绍 1、G…