端上语音识别:MFCC and Mobilenet

前言

在当前深度学习框架下的语音识别,有两个路线可以走:CNN或者RNN.但观当今研究,看cnn大行主流,故选cnn进行实践研究.

实践分两部分,
1,根据CNN对图像处理的巨大优势,将音频做MFCC处理,归一化,再输出为图片;
2, retrain mobilenet

音频mfcc处理

import numpy as np
import matplotlib.pyplot as plt
import librosa
import librosa.display
import os
import sklearn

%matplotlib inline

root = "/home/test/Downloads/audio-cats-and-dogs/cats_dogs"
def getwavfiles(path):
    wav = []
    for root, _, files in os.walk(path):
        for file in files:
            wav.append(os.path.join(path, file))
    return wav

def waveplot(file):   
    x, fs = librosa.load(file)
    librosa.display.waveplot(x, sr=fs)
    
    return x, fs
    
def mfcc(x, fs):
    mfccs = librosa.feature.mfcc(x, sr=fs)
#     librosa.display.specshow(mfccs, sr=fs, x_axis='time')
    return mfccs

def scalemfcc(mfccs, fs):
    mfccs = sklearn.preprocessing.scale(mfccs, axis=1)
    return mfccs
#     print (mfccs.mean(axis=1))
#     print (mfccs.var(axis=1))
    
def drawspec(mfcc, savename):
    plt.figure(figsize=(10, 4))
    librosa.display.specshow(mfccs, x_axis='time')
#     plt.colorbar(format='%+2.0f dB')
    plt.title('Mel spectrogram')
    plt.tight_layout()
    plt.savefig(savename)

def mfccfigs():
    figs = []
    for root, _, files in os.walk(path):
        for file in files:
            figs.append(os.path.join(path, file.replace(".wav", ".png")))
    return figs

wavs = getwavfiles(root)


for wav in wavs:
    x, fs = waveplot(wav)
    mfccs = mfcc(x, fs)
    mfccs = scalemfcc(mfccs, fs)
    drawspec(mfccs, wav.replace(".wav", ".png"))

retrain MobileNet

可以进行retrain的前提是
1 已经下载号tensorfow代码,并且切换到与本机安装tensorflow同版本的分支
2 已经下载了retrain.py脚步,因为最新的tensorflow源码中没有这个脚步了
3 你已经准备号自己的训练数据了

python tensorflow/examples/image_retraining/retrain.py \
    --image_dir ~/data/cats_dogs/ \
    --architecture mobilenet_v2_1.4_224

模型重新训练最后结果如下:

INFO:tensorflow:2018-12-04 14:19:32.957046: Step 3980: Cross entropy = 0.074023
INFO:tensorflow:2018-12-04 14:19:33.017341: Step 3980: Validation accuracy = 88.0% (N=100)
INFO:tensorflow:2018-12-04 14:19:33.617590: Step 3990: Train accuracy = 99.0%
INFO:tensorflow:2018-12-04 14:19:33.617745: Step 3990: Cross entropy = 0.089500
INFO:tensorflow:2018-12-04 14:19:33.679496: Step 3990: Validation accuracy = 89.0% (N=100)
INFO:tensorflow:2018-12-04 14:19:34.222098: Step 3999: Train accuracy = 99.0%
INFO:tensorflow:2018-12-04 14:19:34.222252: Step 3999: Cross entropy = 0.083234
INFO:tensorflow:2018-12-04 14:19:34.283417: Step 3999: Validation accuracy = 87.0% (N=100)
INFO:tensorflow:Saver not created because there are no variables in the graph to restore
INFO:tensorflow:Restoring parameters from /tmp/_retrain_checkpoint
INFO:tensorflow:Final test accuracy = 80.8% (N=26)
INFO:tensorflow:Save final result to : /tmp/output_graph.pb
INFO:tensorflow:Saver not created because there are no variables in the graph to restore
INFO:tensorflow:Restoring parameters from /tmp/_retrain_checkpoint
INFO:tensorflow:Froze 378 variables.
INFO:tensorflow:Converted 378 variables to const ops.

模型转换

为了能在手机端用模型,最好将模型转换为tflite模型.

toco 
--graph_def_file=output_graph.pb 
--output_file=/tmp/mobilenet_v2.tflite --output_format=TFLITE 
--input_arrays=Placeholder 
--output_arrays=final_result 
--input_shapes=1,299,299,3 
--inference_type=QUANTIZED_UINT8 
--inference_input_type=QUANTIZED_UINT8 
--mean_value=128 
--std_dev_values=128 
--default_ranges_min=0  
 --default_ranges_max=6

安卓代码开发(ToDo)

录音

mfcc处理

模型使用

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容

  • 未二、端身正願(分二科)申一、別辨相(分二科)酉一、端身【端身正願者:云何端身?謂策舉身令其端直。】「端身正願者」...
    德虔阅读 201评论 0 0
  • 我相信没有什么事情是无缘无故的,就像我会来到长投的小白训练营,是意外大概也是意料之中~ 其实,这件事要感谢我一个朋...
    王偲静阅读 476评论 1 3
  • 答案是:拉个垫背的,显示你便宜。 怎么理解呢? 假设你有两款净水器,一款1399,一款2288,你很想推荐2288...
    Cody小安阅读 861评论 0 1
  • #简介 深度信息对人脸识别提供了有用的帮助 .但是由于深度图噪音,姿态和表情变化等问题,基于深度图的人脸识别方法性...
    Shatter_1阅读 551评论 0 0
  • 长投学堂——毕业感言 走过四十多年的风风雨雨,无意之中让我接触到了长投,每天学习...
    淋山河镇磙子河福利院阅读 135评论 0 0