yeyupiaoling / MASR

Pytorch实现的流式与非流式的自动语音识别框架,同时兼容在线和离线识别,目前支持Conformer、Squeezeformer、DeepSpeech2模型,支持多种数据增强方法。
Apache License 2.0
572 stars 100 forks source link

C++ 部署问题 #3

Closed PY1203 closed 3 years ago

PY1203 commented 3 years ago

你好,感谢大佬的分享,现在将pytorch模型转化为libtorch,但是缺少前处理提取特征的库,在pytorch版本里面是:

def spectrogram(wav, normalize=True):
    D = librosa.stft(wav, n_fft=n_fft, hop_length=hop_length, win_length=win_length, window=window)

    spec, phase = librosa.magphase(D)
    spec = np.log1p(spec)
    spec = torch.FloatTensor(spec)

    if normalize:
        spec = (spec - spec.mean()) / spec.std()

    return spec

其中,librosa是否有对应的C++封装库,不知道大佬能否提供一些关于部署语音系统的C++资料。

另外,在训练的过程中,学习率设置为0.6,模型会出现不收敛的现象,出现inf,调小一点才可以正常训练。

yeyupiaoling commented 3 years ago

@PY1203 这个过程其实就是把音频转换为numpy,然后再求短时傅立叶变换,C++如何实现我不太了解。

另外,在训练的过程中,学习率设置为0.6,模型会出现不收敛的现象,出现inf,调小一点才可以正常训练。

这个正常,如果你的batch小的话,学习率也需要跟着减小

PY1203 commented 3 years ago

@PY1203 这个过程其实就是把音频转换为numpy,然后再求短时傅立叶变换,C++如何实现我不太了解。

另外,在训练的过程中,学习率设置为0.6,模型会出现不收敛的现象,出现inf,调小一点才可以正常训练。

这个正常,如果你的batch小的话,学习率也需要跟着减小

恩恩,这是一个特征提取的过程,此模型有对比过paddle的ASR吗?感觉模型的鲁棒性不是很好,这个是不是数据集的问题?如果想在一段嘈杂的音频中识别出是否有某个关键词或者词语是使用声纹识别模型还是声音转文本的模型更好。

目前正在公开数据集aishell上面训练,学习率设置为0.01,batch size 32, 损失值一直保持在100左右,感觉还是不收敛。

yeyupiaoling commented 3 years ago

@PY1203 我这也有Paddle的 https://github.com/yeyupiaoling/PaddlePaddle-DeepSpeech

如果你是用语音唤醒的吧,语音识别应该不适合,我记得tensorflow有一个模型,现在找不到了,你可以试试语音分类。

PY1203 commented 3 years ago

@yeyupiaoling paddle上的模型我也尝试过,出现过你曾经出现的问题,训练不收敛,显存一直在变化,batch设置为16才可以训练,之前一直出现nan,最近莫名的训又可以收敛,什么参数都没改。

感谢大佬的建议,我继续试试,有问题再请教,可以留一个联系方式啊!感谢

yeyupiaoling commented 3 years ago

@PY1203 可以私信:https://yeyupiaoling.blog.csdn.net/