1、原来的方案:

(1)采用MFCC(梅尔倒谱)作为音频的特征

(2)采用DTW算法计算两段音频的距离,然后根据距离判断这两个音频是否是同一个音

方案的问题:经过实际数据验证,发现不同人读相同内容,计算出的距离会比较大。可能是因为我们对于MFCC每个维度的特征是同等对待的,有些特征可能是跟发音人者的音色相关度比较大,跟内容相关度小。

2、优化的方案:

根据之前的猜测,我们假设对于某个音节,可能有几个维度的特征跟其他音节差别特别大,我们需要找到这几个特征。基于这个假设,我们采用穷举法从13个特征中找到最能区分音节的特征组合。

代码如下:

# -*- coding: utf-8 -*-

import os

import numpy as np

from scikits.audiolab import wavread

import scikits.talkbox

import fastdtw

from scikits.talkbox import features

from scikits.talkbox.features import mfcc

weight=[0,1,1,1,1,1,1,1,1,1,1,1,1]

fdict={}

def getfeature(x):

if(fdict.has_key(x)):

return fdict[x]

else:

data, fs, enc=wavread(x)

temp=mfcc(data)[0]

fdict[x]=temp

return temp

def mydist(a, b):

i_dist=0

i_len=0

for i in range(13):

if(weight[i]>0):

i_dist=i_dist+abs(a[i]-b[i])

i_len=i_len+1

return i_dist/i_len

def dist(mf1, mf2):

re=fastdtw.fastdtw(mf1, mf2, 1, mydist)[0]

return re

def calcsimilar(x, y):

fx=getfeature(x)

fy=getfeature(y)

d = dist(fx, fy)

return d

# 获取指定路径下所有指定后缀的文件

# dir 指定路径

# ext 指定后缀,链表&不需要带点 或者不指定。例子:['xml', 'java']

def GetFileFromThisRootDir(rootdir,filelist):

for i in os.listdir(rootdir):

filepath = os.path.join(rootdir,i)

if os.path.isdir(filepath):

GetFileFromThisRootDir(filepath, filelist)

elif i.endswith('.wav') and os.path.exists(filepath):

filelist.append(filepath)

def calcfactor(path, name, template):

ftemplate=getfeature(template)

files=[]

min_dist=999999

max_dist=0

GetFileFromThisRootDir(path, files)

for filename in files:

f=getfeature(filename)

d=dist(f,ftemplate)

if name+".wav" in filename:

if(d>max_dist):

max_dist=d

else:

if(d

min_dist=d

return (min_dist-max_dist)/max_dist

def train(path, name, template):

dist=-99999

re_i=-1

re_j=-1

re_m=-1

re_n=-1

for n in range(13):

for m in range(13):

for i in range(13):

for j in range(13):

for k in range(13):

weight[k]=1

weight[i]=0

weight[j]=0

weight[m]=0

weight[n]=0

d=calcfactor(path, name, template)

print d

if(d>dist):

dist=d

re_i=i

re_j=j

re_m=m

re_n=n

return dist, re_i, re_j, re_m, re_n

java mfcc_基于MFCC的语音评测方法相关推荐

  1. 英语口语语音评测方法

    语音评测目前主要有以下两种方案: 1.GOP(Goodness of Pronunciation): 2.MDD: 目前国内的语音评测算法大部分基于GOP(Goodness of Pronunciat ...

  2. 基于MFCC的语音数据特征提取概述

    1. 概述 语音是人类之间沟通交流的最直接也是最快捷方便的一种手段,而实现人类与计算机之间畅通无阻的语音交流,一直是人类追求的一个梦想. 伴随着移动智能设备的普及,各家移动设备的厂家也开始在自家的设备 ...

  3. [声纹识别]基于MFCC的声纹识别算法

    Mel频率倒谱系数(melfrequency cepstral coefficients,MFCC)是声音的短期功率谱的表示,基于非线性频谱上的对数功率谱的线性余弦变换.在自动语音识别领域,MFCC是 ...

  4. Spring Boot+Vue前后端分离项目接入科大讯飞——语音评测

    因为讯飞官方提供的sdk没有Java的,所以我使用的是WebApi.其中有些注意事项官网有写出,可自行查看. 下面是具体的接入过程: 下载这个demo 然后把里面的三个文件复制到项目里 主要用到的是F ...

  5. matlab计算后验概率,基于深度神经网络后验概率算法的口语发音评测方法与流程...

    本发明涉及发音评测领域,特别涉及一种基于深度神经网络后验概率算法的口语发音评测方法. 背景技术: 常用的语音评测技术,比如用于英语口语教学中的语音评测,一般都是采用智能打分技术对学习者的口语进行评测, ...

  6. java 解压到内存,Java GZip 基于内存实现压缩和解压的方法

    欢迎大家关注本博,同时欢迎大家评论交流,可以给个赞哦!!! GZip是常用的无损压缩算法实现,在Linux中较为常见,像我们在Linux安装软件时,基本都是.tar.gz格式..tar.gz格式文件需 ...

  7. Java翻译byte数据,java学习|图说String(二):基于byte数组的String方法调用

    基于byte数组的String方法调用 上文说到,String的方法调用都是基于byte数组,其实说更详细点:都是基于String中value字段的调用: 注,本文中所有的源码均基于jdk11 通过上 ...

  8. html5 视频语音对讲,一种基于WebRTC的多人语音视频通话方法及系统与流程

    本发明涉及视频通话领域,特别涉及一种基于WebRTC的多人语音视频通话方法及系统. 背景技术: 随着互联网技术和通信技术的快速发展,人们的交流方式与交流内容得到了极大的丰富和发展.在节奏越来越快的信息 ...

  9. rms归一化_基于RMS分频的高可懂度语音评价方法

    2018 , 54 ( 21 ) 1 引言 语音可懂度是语音信号的一种重要属性.目前很 多研究学者提出大量语音可懂度的评价方法来预测背 景噪声条件下的语音可懂度.传统的语音可懂度客观 评 价 方 法 ...

最新文章

  1. 疯狂python讲义
  2. babel编译html文件,使用webpack+babel来_编译_JS代码
  3. 聊一聊Android的消息机制
  4. boost::hana::drop_front_exactly用法的测试程序
  5. [智能架构系列]什么是Buddy智能开发框架
  6. [JS-BOM]BOM_Location地址栏对象
  7. eff java_牛津大学为国家图书馆周开幕,EFF组织大学活动家,等等
  8. vs2015 mysql edmx_VS2015+MySql EF的配置问题
  9. 基于LEAP模型的能源环境发展、碳排放建模预测及不确定性分析
  10. 【Windows优秀软件推荐】:唧唧down——视频和弹幕全清晰度下载
  11. 《暮色4:破晓(上)》暮光之城 高清蓝光BD 1080P 720P下载,附中英双字字幕!...
  12. go之树型结构深度理解
  13. 对接科大讯飞AIUI心得
  14. python_pygame_alpha-beta剪枝算法_玩中国象棋
  15. 关于一个CUE文件及多个分轨APE合并成CUE及APE文件的办法
  16. 区块链知识系列 - 系统学习EVM(二)-存储与安全
  17. Oracle19c的安装配置教程
  18. 【IT文化杂谈】硅谷,仙童与“八叛徒”的故事
  19. 推荐一部美国电影---‘’决胜21点‘’O(∩_∩)O
  20. 计算机显示硬盘故障是怎么回事,如果计算机硬盘出现故障怎么办

热门文章

  1. 代码审计--22--PMD详细
  2. 2022-2028年全球铜化学品收入年复合增长率CAGR为 3.2%
  3. Detour hook库x86 x64编译
  4. 【OpenGl】万向节死锁的简易理解
  5. 网络推广与策划心得,网络营销与策划的实践收获
  6. 【超好懂的比赛题解】“山大地纬杯”第十二届山东省ICPC大学生程序设计竞赛(正式赛)
  7. sobel的matlab实现,Sobel算法
  8. php企业微信号js-sdk,php微信公众号js-sdk开发应用
  9. Springboot自动售货机后台管理系统源码带文档
  10. 清洗一下自身的系统——五脏排毒DIY(转载)