unity3D学习之音频数据的采集要点-audio菜鸟笔记6
2017-11-21 11:56
543 查看
之前的那些博文都只是很粗糙的知识跟一些自己的练习而已,这次我将介绍一下自己用过的音频数据采集的方法:
1、AudioClip.GetData(a, b)
可以直接从AudioSource组件中的音频文件获取数据,不管是mute是否为true,还是volume为0都能获取到音频的数据,数据长度为第b个数据开始取样,长度为a个数据(最小为64个,关于这个可以去查查api)。
获取某一段音频:
2.AudioSource.GetSpectrumData(a, 0,FFTWindow.BlackmanHarris)
通过音频组件获取音频数据,自由在mute为false,volume不为0的情况下才能获取数据(即:必须音频放出声音才能获取音频数据),a是数据长度(同上),0是声道数,FFTWindow是取样级别,级别越高取样越精确。用法类似于AudioClip.GetData(a, b)。
3.OnAudioFilterRead(float[] data, int channels)
这个是unity自带的方法,有点类似于Update()方法,不过这个方法会不断的获取全局的音频数据(当有多种音频同时播放时,会获取混合声音的数据,可以用做声音的合并)然后再流回去变为声音输出。data是取样数据组,固定为2048个;channels是声道数,默认是2个(即:data[0]和data[1]的数值是一样的)。
使场景全局静音,结合上面2种方法不管是mute为false,还是volume为1,都可以获取到音频数据:
同时可以改变音频的数据来达到变声的效果:
除了我说的这些之外还有很多可以利用这些方法实现的功能,发挥你的想象力吧d=====( ̄▽ ̄*)b
1、AudioClip.GetData(a, b)
可以直接从AudioSource组件中的音频文件获取数据,不管是mute是否为true,还是volume为0都能获取到音频的数据,数据长度为第b个数据开始取样,长度为a个数据(最小为64个,关于这个可以去查查api)。
获取某一段音频:
float[] tempclip = new float[audiosource.timeSamples - TSamples]; audiosource.clip.GetData(tempclip, TSamples); audiosource.clip = AudioClip.Create("newClip", tempclip.Length, 1, frequencyClip, false); audiosource.clip.SetData(tempclip, 0);
2.AudioSource.GetSpectrumData(a, 0,FFTWindow.BlackmanHarris)
通过音频组件获取音频数据,自由在mute为false,volume不为0的情况下才能获取数据(即:必须音频放出声音才能获取音频数据),a是数据长度(同上),0是声道数,FFTWindow是取样级别,级别越高取样越精确。用法类似于AudioClip.GetData(a, b)。
3.OnAudioFilterRead(float[] data, int channels)
这个是unity自带的方法,有点类似于Update()方法,不过这个方法会不断的获取全局的音频数据(当有多种音频同时播放时,会获取混合声音的数据,可以用做声音的合并)然后再流回去变为声音输出。data是取样数据组,固定为2048个;channels是声道数,默认是2个(即:data[0]和data[1]的数值是一样的)。
使场景全局静音,结合上面2种方法不管是mute为false,还是volume为1,都可以获取到音频数据:
private void OnAudioFilterRead(float[] data, int channels) { for (int i = 0; i < data.Length; i++) { data[i] = 0; } }
同时可以改变音频的数据来达到变声的效果:
private void OnAudioFilterRead(float[] data, int channels) { for (int i = 0; i < data.Length; i++) { data[i] = data[i]*2f; } }
除了我说的这些之外还有很多可以利用这些方法实现的功能,发挥你的想象力吧d=====( ̄▽ ̄*)b
相关文章推荐
- unity3D学习之声音的采集与处理-audio菜鸟笔记1
- unity3D学习之音频播放 、实时变声简化版-audio菜鸟笔记5
- unity3D学习之音频基础原理-audio菜鸟笔记3
- unity3D学习之音频测试-audio菜鸟笔记4
- Virtual Audio Cable使用笔记三:使用Virtual Audio Cable将播放的音频数据传输到录音机程序中
- python3.6+yeelink的数据点操作【菜鸟学习笔记-1】
- 【Android笔记】dump audio数据定位音频问题
- Python网络数据采集学习笔记1
- 『python学习』python 网络数据采集笔记
- android菜鸟学习笔记18----Android数据存储(二)SharedPreferences
- Android菜鸟学习笔记(WebView加载html页面,页面提交数据问题)
- 利用.net 中数据绑定向导将数据绑定到datagrid当中(菜鸟学习笔记)
- 基于usb的数据采集系统设计 学习笔记一
- 学习音频之android中AudioRecord采集音频的参数说明
- Audio驱动开发 之 音频链路学习笔记
- 小白的廖雪峰JS教程学习笔记要点---数据类型和变量
- unity3D学习之ITween例子测试-UI菜鸟笔记1
- Java菜鸟学习笔记--语法篇(二):基本数据的自动/强制转换
- 激光雷达学习笔记(一)数据采集
- android菜鸟学习笔记17----Android数据存储(一)文件读写