自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

JOHZEN

VR,声学和代码

  • 博客(37)
  • 收藏
  • 关注

原创 Unity 读取资源文件 Resources.Load()

Unity 中使用 Resources.Load() 命令读取资源文件。使用中有几个值得注意的地方:读取文件时的根目录是 Assets/Resources,所有资源文件都放在该文件夹下,命令中的路径从 Resources 文件夹里开始写。用 / 表示子文件夹。读取的文件不要加文件的后缀。Load 后 <> 中写入读取的类型。举个例子,如果我们想要读取音频文件 Asset...

2018-11-04 10:39:57 36760 3

原创 音频重采样 python+librosa

python中的librosa库让我们可以非常方便的对音频文件进行重采样。目标是一个48kHz的音频,利用librosa库中中的resample将这段音频下采样到8kHz。import librosa# to install librosa package# > conda install -c conda-forge librosa filename = 'ClapSound....

2018-10-18 12:47:13 10713

原创 librosa.load() 读取音频的采样率处理

利用python中的 librosa.load() 我们可以轻松的读取音频文件,但对于不同采样率的音频文件,使用这一函数有一些细节还需注意。如果 sr 缺省,librosa会默认以22050的采样率读取音频文件,高于该采样率的音频文件会被下采样,低于该采样率的文件会被上采样。如果希望以原始采样率读取音频文件,sr 应当设为 None。具体做法为 y, sr = librosa(filename...

2018-10-18 12:45:36 21823 2

原创 impulse response 使用的踩坑 —— cconv

在 impulse response 的使用中遇到了小小的问题,具体如图,第一行是原始信号,第二行是响应的信号,在通过将原始信号和相应信号分别转换到频域求得 transfer function 后,ifft 得到 impulse response。第三行是原始信号和 ir 进行卷积得到的结果,可以看到在信号最开始的阶段,有一个意料外的响应。:这一段的代码如下:% src: 原始信号% r...

2018-10-16 16:07:23 5192 1

原创 语音情感识别探讨

El Ayadi M, Kamel M S, Karray F. Survey on speech emotion recognition: Features, classification schemes, and databases[J]. Pattern Recognition, 2011, 44(3): 572-587.简介语音识别的发展可以说是非常成熟,但距离我们的目...

2018-09-05 15:43:29 9624

原创 HOA声场重建原理

在空间音频尤其是声场重建的任务中,HOA绝对是最为重要的技术之一,但这个HOA涉及到调和分解等一系列概念,理解起来其实并不容易。最近要写一篇基于HOA的声场重建论文,但在background的时候就感到头疼,不知怎么下手,于是借着这篇文章,回头看看HOA,也好梳理一下自己的思路。空间音频是什么?空间音频很多地方也叫做三维音频,它源于我们人据有分辨声音来源方向的能力。虽然一直是比...

2018-07-14 23:02:07 4164 2

原创 用 Keras 建立CNN对 UrbanSound 进行音频分类

Urban Sound Classifier using CNN v2第一个CNN的分类器效果惨烈,有许多细节都没有注意到,感觉修改也令人心烦,从头开始。老实说我也不知道这次能不能成功,边做边看吧。上次踩过的坑和经验之前把频谱当作训练数据输入,但频谱里的数值都是负数,后来换为了绝对值。但这样其实也不行,应该要进行normalization。把是把值的范围限制在[-1,1]还是[0...

2018-07-08 18:40:56 7517 18

原创 NMF非负矩阵分解初探

NMF非负矩阵分解初探NMF非负矩阵分解初探简介NMF信号分解最优化问题NMF简介数据可以表示为一个矩阵 VVV,列 vnvnv_n 是采样点而行代表特征features。我们想把这个矩阵VVV因式分解为两个未知的矩阵 WWW 和 HHHV≈V^≡WHV≈V^≡WH V \approx \hat{V} \equiv WH这里面 WWW 是一个经常性...

2018-07-04 17:48:30 1083

原创 刷题适可而止,算法还要好好学习

过去的一个月,我倾注了大量的精力在刷编程题上。不可否认,自己还是有一些进步,有感觉到在面对题目时,从从前的不知所措,变得能慢慢梳理清思路,虽然遇到难度稍高一些的题目时还是会有些困难,但比起一个月前的我,还是有大大的提高。但我不得不开始反思,我要做的到底是什么。我目标的职位是做音频算法工程师,然而每天这样的刷题,真的可以帮助我实现目标吗。我相信持之以恒下去,我也许可以成为一个编程达人,但算法工程...

2018-07-04 12:10:45 1877

原创 [LeetCode]43. Multiply Strings

43. Multiply Strings这道题要做的是将两个写成了string的数字相乘,思路很清晰,就是手算乘法的式子。我的想法是把这个过程模块化,写作一个字符乘以一个string和错位相加两个部分,可能实力还有欠缺写的不是很简洁。class Solution {public: string multiply(string num1, string num2) { ...

2018-07-03 22:39:53 200

原创 [LeetCode]37. Sudoku Solver

37. Sudoku Solver求解数独。前两天做了验证数独那道题,当时对于遍历hash的使用有了一些感悟,但看这道题时候特别头疼。这两天HackerRank也刷了一下,对于DFS和BFS的理解加深了一些,渐渐的思路就变得清晰。其实是很暴力的解法,但把他转化为代码,对几天前的我来说还有一些难度。经过这两天的学习,总算是可以勉强完成,但参考别人的答案后,果然进步空间还比较大。我之前的版本,...

2018-07-03 19:03:22 260

原创 堆,堆在C++中用法

Heap堆有最大堆与最小堆,也有对应的push和pop操作。在最大堆中,最大的元素在堆顶,pop会将最大的元素推出, 最小堆则反之。C++中的用法C++中的堆,要基于向量使用。操作基于三个函数std::make_heap,std::push_heap,std::pop_heap,并且要配合push_back与pop_back使用。需要#include <algorithm&g...

2018-07-03 15:06:01 1139

原创 [HackerRank]BFS Shortest Reach in a Graph

BFS: Shortest Reach in a Graph Challenge Name: BFS: Shortest Reach in a Graph Consider an undirected graph consisting of nnn nodes where each node is labeled from 111 to nnn and the edge betw...

2018-07-03 15:04:04 613

原创 [HackerRank]Merge Sort Counting Inversions

Merge Sort: Counting Inversions这道题设定了一个情景,但其实是让我们复习merge sort。那么我们就来复习一下merge sort。Merge sort的思想是先把数组分段,递归进行mergesort,再合并起来。有一个细节,在合并的过程中,可以借助合并的两段都是sort好的数列,利用这一特性合并起来会较快一些。送上伪代码:MergeSort(ar...

2018-07-02 21:32:04 650

原创 [HackerRank]Sorting Comparator

Sorting: Comparator这道题让我们将分数从大到小排序,遇到分数相同时候,按名字字母从小到大排序。一开始我还想着要手写一个快速排序,后来发现这道题其实是一个教学,教我们字母自定义比较函数,并用于STL的函数中。这样一来思路就很清晰了,比较函数很简单,如果分数高,或者分数相同但字母小,则返回true。bool comp(Player& a, Player&a...

2018-07-02 19:38:54 307

原创 [HackerRank]Tries Contacts

Tries: Contacts这题让我门建立一个树来存电话簿的名字,并能够返回以某一字符串开头的名字有多少个。难点在与自己建立一个数据结构。我的方法是建立一个字符树,每个节点存下有几个children,以及一个hash表,用于索引之后的字符。如下:struct wordTree{ int cnt; unordered_map<char, wordTree*&g...

2018-07-02 11:32:36 296

原创 [LeetCode]42. Trapping Rain Water

42. Trapping Rain Water对于这题我只能说,好好看好好学。 初看题目也有想到用堆栈,但对于写法却一头雾水。class Solution {public: int trap(vector<int>& height) { stack<int> hIdx; int i = 0, h = 0, res ...

2018-07-01 21:10:21 196

原创 [LeetCode]41. First Missing Positive

41. First Missing Positive题目要求找出数组中第一个缺失的正数。难点在与时间复杂的要求O(n),空间复杂度要求O(1)。又是一道不会做抄答案的题目。思路是把遇到的每一个数放到元数组中排序的位置。class Solution {public: int firstMissingPositive(vector<int>& nums) ...

2018-07-01 18:39:59 189

原创 [LeetCode]40. Combination Sum II

40. Combination Sum II与上一题几乎一模一样,代码也可以复用。问题在于这次不可以重复,自然就想到了把DFS函数中的start加1。然而由于candidates中存在同样的数字,所以重复不能完全避免。另一方面,重复的数字是有必要出现在combination中的。这又使我苦恼。参考大佬:http://www.cnblogs.com/grandyang/p/4419386.htm...

2018-07-01 18:05:09 172

原创 [LeetCode]39. Combination Sum

39. Combination Sum题目要求列出所有的可能情况,我也想到了要使用递归去解决,但具体的方法却很头疼,依旧是参考了大佬的答案,豁然开朗http://www.cnblogs.com/grandyang/p/4419259.html。DFS中start变量的引用可以防止递归的答案重复,很优秀。正如大佬所说,返回所有符合要求的解的题目就想到递归,而思路多相似,要新写一个递归的函...

2018-07-01 17:49:49 256

原创 [LeetCode]38. Count and Say

38. Count and Say这题最开始题目没看懂。看懂后发现和Cracking the Coding Interview里面的字符串压缩的题目(1.6)很像,就是计算一个数字重复几次,然后打印重复的数量和该数字。 在字符串压缩的题目中,我用了好几个if判断,这次看了http://www.cnblogs.com/grandyang/p/4086299.html把循环优化为while,代码...

2018-07-01 15:50:12 136

原创 [LeetCode]36. Valid Sudoku

36. Valid Sudoku要验证数独的棋盘,就是三个标准,行没有重复,列没有重复以及3x3格子没有重复。最开始的思路是建立1*9的hash表,依据这个标准检测三次,但这样带来一个问题是需要遍历棋盘三次。但其实可以扩大hash表,只需遍历棋盘一次。class Solution {public: bool row[9][9] = {0}; // 9行的hash bo...

2018-07-01 14:20:43 180

原创 [LeetCode]35. Search Insert Position

35. Search Insert Positioneasyhttps://leetcode.com/problems/search-insert-position/description/这道题是一道比较简单的二分搜索题,最近的这几道题都是用二分搜索,这题的讨论要简单一点,正好适合看看二分的条件。class Solution {public: int searchI...

2018-07-01 13:28:08 106

原创 [LeetCode]1. Two Sum

1. Two SumGiven an array of integers, return indices of the two numbers such that they add up to a specific target.You may assume that each input would have exactly one solution, and you may not u...

2018-07-01 12:58:40 141

原创 堆,堆在C++中用法

Heap堆有最大堆与最小堆,也有对应的push和pop操作。在最大堆中,最大的元素在堆顶,pop会将最大的元素推出, 最小堆则反之。C++中的用法C++中的堆,要基于向量使用。操作基于三个函数std::make_heap,std::push_heap,std::pop_heap,并且要配合push_back与pop_back使用。需要#include <algorithm&g...

2018-07-01 11:49:01 615

原创 [LeetCode]34. Search for a Range

34. Search for a Rangehttps://leetcode.com/problems/search-for-a-range/description/ 与上一题很相似,原理很清晰,两次二分搜索,一次找前边界一次找后边界,不必在找到target后直接break。但我真的是太讨厌二分搜索了,边界条件实在头疼。class Solution {public: ve...

2018-06-30 20:08:17 188

原创 [LeetCode]33. Search in Rotated Sorted Array

33. Search in Rotated Sorted Arrayhttps://leetcode.com/problems/search-in-rotated-sorted-array/description/这道题的核心思想在于原数组是一个递增,即使旋转后,也具有这一性质,只不过递增的数组变成了两个。所以使用binary search即可。但要注意一些细节,比如if中的条件if (n...

2018-06-30 19:21:53 114

原创 [LeetCode] 32. Longest Valid Parentheses

Longest Valid Parenthesesclass Solution {public: int longestValidParentheses(string s) { stack<int> stk; int res = 0; int start = 0; for (int i = 0; i&...

2018-06-30 18:12:31 178

原创 Introduction to adaptive rectangular decomposition

Introduction to adaptive rectangular decompositionKnowledge dependencies: Wave equation, Finite-difference time-domain method, Discrete cosine transformARD (Adaptive Rectangular Decomposition) i...

2018-03-11 13:45:41 232

原创 Unity学习日记-使用脚本进行音频资源的读取,Resources.LoadAll

这次过程太过艰辛,在网上搜了很多,然而一个能用的都没有,于是自己硬生生的试了出来,就讲结论吧。 要做的事情是用脚本读取音频文件,其实读取音频文件用GUI是非常简单的,可是,HRTF的数据库动辄几百的音频文件,若要手工,画面太美,而且如果都放在场景之中,很容易乱套,所以还是当做资源文件调用比较合适。 (我目前知道的)Unity 提供了三个读取资源的函数,分别是Resources.Lo...

2016-01-19 11:30:01 7225 2

原创 Unity学习日记-Unity音频处理,自定义滤波函数OnAudioFilterRead

Unity 的现有的资料中,音频处理部分真是少得可怜,每走一步都感觉自己是先驱(虽然应该并不是)。前几天一边学Unity 的基本知识,同时也扫荡了一下Unity 中与音频相关的API。我要做的事情是使用HRTF 对音频进行实时的处理,制造具有方位感的音频,之前提到过HRTF 本质上就是一个滤波器,主要的困难在于,这个滤波器是要进行实时的刷新的,在不同的时间点,这个滤波器是会变化的。

2016-01-18 10:30:19 7120 2

原创 Unity学习日记-Demo再升级,Script创建GameObject物件

上次成功的创建了一个小型的场景,这次目的是使用脚本来进行场景中物件的创建。第一步的目的如下,在一个平面上批量的创建黄色的Cube。创建Cube使用的语句是 GameObject cube = GameObject.CreatePrimitive (PrimitiveType.Cube);然后给cube写入位置信息和颜色信息 cube.transform.po

2016-01-17 10:34:37 2132 1

原创 Unity学习日记-第二个Demo,脚本间的参数传递

控制主要使用GetComponent这个函数。

2016-01-15 18:59:00 4697 1

原创 Unity学习日记-Creating Scripts

在Unity GUI 中creat script时会自动生成一个模板using UnityEngine;using System.Collections;public class MainPlayer : MonoBehaviour { // Use this for initialization void Start () { Debug.Log("Fuck

2016-01-15 18:33:50 378

原创 Unity学习日记-hello world

想把HRTF的音频处理移植到Unity上,因此开始学习Unity,在网上粗略的找了找,音频真是一万年没人翻牌子,只用GUI大概很困难,script大概是免不了了。自己的想法是用js开发,因为入门简单。由于毫无背景,所以没有系统的概念,这里记得大概也会非常的零碎,姑且作为一个备忘录吧。首先在跟着这个blog学习:http://blog.163.com/shininglore@126/bl

2016-01-15 17:42:08 558

原创 HRTF音频处理

HRTF全称叫Head Related Transfer Function,可以看成是一个特定位置的声音传输到左右耳的频率响应,对应的时域响应叫HRIR,Head Related Impulse Response。所以,HRTF其实就是一个滤波器。要得到经HRTF处理的特定位置声音,只需要与HRIR做卷积就好了,或者fft之后与HRTF相乘。MIT、CIPIC的HRTF库给出的dat,

2016-01-12 13:32:23 6456 4

原创 SIFT-sift.m

% [image, descriptors, locs] = sift(imageFile)%% This function reads an image and returns its SIFT keypoints.% Input parameters:% imageFile: the file name for the image.%% Returned:%

2015-04-16 15:22:11 716

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除