读取信号为数组

def wavread(filename):f = wave.open(filename,'rb')params = f.getparams()nchannels, sampwidth, framerate, nframes = params[:4]strData = f.readframes(nframes)#读取音频,字符串格式waveData = np.fromstring(strData,dtype=np.int16)#将字符串转化为int
    f.close()waveData = waveData*1.0/(max(abs(waveData)))#wave幅值归一化waveData = np.reshape(waveData,[nframes,nchannels])return waveData

View Code

音量计算

# method 1: absSum
def calVolume(waveData, frameSize, overLap):wlen = len(waveData)step = frameSize - overLapframeNum = int(math.ceil(wlen*1.0/step))volume = np.zeros((frameNum,1))for i in range(frameNum):curFrame = waveData[np.arange(i*step,min(i*step+frameSize,wlen))]curFrame = curFrame - np.median(curFrame) # zero-justifiedvolume[i] = np.sum(np.abs(curFrame))return volume

View Code

分帧信号

def enframe(signal, nw, inc):'''将音频信号转化为帧。参数含义:signal:原始音频型号nw:每一帧的长度(这里指采样点的长度,即采样频率乘以时间间隔)inc:相邻帧的间隔(同上定义)'''signal_length=len(signal) #信号总长度if signal_length<=nw: #若信号长度小于一个帧的长度,则帧数定义为1nf=1else: #否则,计算帧的总长度nf=int(np.ceil((1.0*signal_length-nw+inc)/inc))pad_length=int((nf-1)*inc+nw) #所有帧加起来总的铺平后的长度zeros=np.zeros((pad_length-signal_length,)) #不够的长度使用0填补,类似于FFT中的扩充数组操作pad_signal=np.concatenate((signal,zeros)) #填补后的信号记为pad_signalindices=np.tile(np.arange(0,nw),(nf,1))+np.tile(np.arange(0,nf*inc,inc),(nw,1)).T  #相当于对所有帧的时间点进行抽取,得到nf*nw长度的矩阵indices=np.array(indices,dtype=np.int32) #将indices转化为矩阵frames=pad_signal[indices] #得到帧信号
#    win=np.tile(winfunc(nw),(nf,1))  #window窗函数,这里默认取1
#    return frames*win   #返回帧信号矩阵return frames

View Code

#端点检测,通道(阈值)计算方法 

def findIndex(vol,thres):l = len(vol)ii = 0index = np.zeros(500,dtype=np.int16)for i in range(l-1):if((vol[i]-thres)*(vol[i+1]-thres)<0):index[ii]=iii = ii+1#return index[[0,-1]]return index

View Code

#基频(音高)计算

# 自相关函数计算基频率
def ACF(frame):flen = len(frame)acf = np.zeros(flen)for i in range(flen):acf[i] = np.sum(frame[i:flen]*frame[0:flen-i])return acf

View Code

转载于:https://www.cnblogs.com/oucxlw/p/9224857.html

对哼唱的语音或者播放的音乐进行乐谱的识别,并将哼唱转换为其他乐器的声音回放...相关推荐

  1. 通过百度语音在线识别控制灯和播放本地音乐

    参考链接:https://blog.csdn.net/qazwyc/article/details/57153734 本文所有代码链接:https://pan.baidu.com/s/1LT5LBkO ...

  2. 婴儿音乐摇篮语音芯片,高品质音乐播放ic,WT2003H

    对于所有的父母来说,给孩子提供一个安全.温馨.舒适的环境是至关重要的.随着科技的不断发展,现在有了一种全新的解决方案,即婴儿音乐摇篮语音芯片,高品质音乐播放IC,WT2003H. 该芯片采用了最新的音 ...

  3. iOS开发实用技术之音频播放(QQ音乐)

    音频播放 --- 一. 录音 0. 应用场景 大多数应用在即时通讯APP中, 语音发送 1. 录音步骤 导入AVFoundation框架 #import <AVFoundation/AVFoun ...

  4. MIDI应用: 播放midi音乐文件的方法 [Win32版本+ C语言版本]

    播放midi音乐文件的方法 背景说明: 在游戏编程中,给程序增加音效几乎是必须的;在普通程序中增加音效也会给使用者带来更好的体验;而mid格式的音效文件体积最小(大约1k到数十k),效果却不亚于MP3 ...

  5. 【笔记】可能是唯一能让天猫精灵方糖播放本地音乐的智能方案

    微信关注公众号 "DLGG创客DIY" 设为"星标",重磅干货,第一时间送达. 前言 如上图所示,我家也有个同款的天猫精灵方糖,"买了"(好 ...

  6. 树莓派全语音控制媒体播放器(Fully Speech-Controlled Media Player)

    树莓派全语音控制媒体播放器(Fully Speech-Controlled Media Player) 主要特点: *全程无外设操作,可以在无鼠标键盘显示器等外设的情况下(Headless),完全通过 ...

  7. HTML中简单的声音语音MP3播放代码

    HTML中简单的声音语音MP3播放代码 在网页中播放MP3 语音播放代码 各浏览器默认支持的音频格式 在网页中播放MP3 我们有时候需要在网页里播放一段提示声音,如何通过几行代码就能实现在网页中播放各 ...

  8. CentOS 6.x 播放 mp3 音乐 —— 成功

    CentOS 6.x 播放 mp3 音乐 -- 成功 参考:http://blog.chinaunix.net/uid-14735472-id-3472898.html centos 6.x  添加 ...

  9. Java 添加播放MIDI音乐

         Java 在多媒体处理方面的确优势不大,但是我们在程序中有些时候又需要一些音乐. 如果播放的音乐是wav等波形音频文件,又很大的话,所以背景音乐最好就是MIDI了. 网上很多播放MIDI的教 ...

最新文章

  1. sql2000 的bcp命令
  2. JavaScript系列文章:自动类型转换
  3. 系统异常捕捉处理设计文档
  4. 信令风暴研究现状总结
  5. Python包、模块、类以及遇到的问题
  6. 洛谷P2522 [HAOI2011]Problem b(莫比乌斯反演)
  7. java excel jxls_java通过jxls框架实现导入导出excel文件实例
  8. 苹果树(线段树+Dfs序)
  9. php调用apache,apache调用php执行系统命令
  10. Android ActivityManager一些API介绍
  11. UML统一建模语言 Rational Rose 使用
  12. 84消毒液和酒精混合的化学反应分析
  13. LCEDA-国产PCB设计工具
  14. 【论文翻译】HCGN:面向集体分类的异构图卷积网络深度学习模型
  15. 自定义控件之Canvas图形绘制基础练习-青春痘笑脸^_^
  16. Linux删除只读文件系统
  17. 吴思里:PCG腾讯文档前端面试经历
  18. 如何利用起家里的旧电脑当个人网盘使?这里有半小时教程(逐步)
  19. 为iPhone 6设计自适应布局
  20. 数据结构——图书信息管理系统的顺序表实现

热门文章

  1. 18岁、20岁、23岁、25岁、28岁、30岁
  2. 通关《Diablo2》12遍纪念
  3. linux usb有线网卡驱动_有线网卡Linux驱动安装小记
  4. HDU 4043 FXTZ II
  5. 记录: 问题:/usr/bin/ld: main.o: Relocations in generic ELF (EM: 183)
  6. python实现qq登录界面_Python实现QQ界面
  7. netcore 动软三层架构-急速开发框架 winfrom demo
  8. 解决网页在浏览器有反应 在手机端没反应问题
  9. FineReport数据集
  10. 两张显卡在win10上如何使用