unity3D学习之声音的采集与处理-audio菜鸟笔记2

在此我想声明一下,我的文章都是上网查质料和参考大神的博客写的,我只是想把自己做过的一些笔记记录下来。希望大家能理解,不喜勿喷。

原文链接:http://blog.csdn.net/dfgjava/article/details/47102997点击打开链接

进阶版链接:http://www.cnblogs.com/greyhh/p/6898427.html点击打开链接

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class RecordText : MonoBehaviour {
    private AudioClip audioclip;
    private byte[] recordData;

    //无损音质的采样率=44100,即每秒音频用44100个float数据表示,但语音8000就够了(通常的移动电话=8000)。
    //音频数据太大不利于传输和存储。
    public const int SamplingRate = 8000;


	//按钮按下开始录音,松开结束
    void OnRecording(GameObject goSender, bool flag)
    {
        if (flag){
            //Microphone.End()如果你传递一个无效或者空的字符串设备名称那么默认麦克风将会被使用。你可以从设备属性中获取可用麦克风设备列表。
            Microphone.End(null);//可以不需要,但开始录音前调用一次是个好习惯。
            
            //参数分别是麦克风的名字、是否循环录制、录音长度和音质
            audioclip = Microphone.Start(null, false, 10, SamplingRate);

        }
        else//结束录音
        {
            int audioLength;//录音的长度,单位为秒,ui上可能需要显示。
            int lastPos = Microphone.GetPosition(null);//位置

            //如果你传递一个无效或者空的字符串设备名称那么默认麦克风将会被使用。你可以从设备属性中获取可用麦克风设备列表。
            if (Microphone.IsRecording(null)){//(查询是否记录当前设备)录音小于10秒
                audioLength = lastPos / SamplingRate;

            }
            else
            {
                audioLength = 10;
            }

            Microphone.End(null);//录音结束,audioclip可以播放了。

            if (audioLength < 1.0f) { return; }//小于1秒不处理。

            压缩后的recordData便于网络传输。
            //recordData = AudioClipCompressor.CompressAudioClip(clip);

            本地可以用sqlit存储,  
            //int soundId = string.Format("{0}{1}", player.ID, System.DateTime.Now.ToString());
            //DbSound dbs = new DbSound();
            //dbs.InsertSound(soundId, audioLength, recordData);
            //dbs.CloseSqlConnection();
        }
    }
}

文中的保存方法有点问题,搞不懂,所以我找了篇关于保存的文章:http://blog.csdn.net/awnuxcvbn/article/details/50737029 点击打开链接

关于音频的压缩,有很多压缩算法,已不再本文涉及的范围内,会用到的接口:
1、AudioClip.GetData接口可以将audilClip转化为float[] samples。
2、AudioClip.Creat()创建AudioClip,,然后AudioClip.SetData将float[] samples数据设置到clip



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值