可以比较手机中已录制语音的语音。基于比较,我们可以评价良好,非常好,优秀等。大多数封闭声音得到高评价。
有人知道Android有可能吗?
帮助非常明显。
答案 0 :(得分:3)
对于一般音频处理库,我可以推荐marsyas。不幸的是official home page目前正在关闭。
Marsyas甚至提供了一个示例Android应用程序。在获得适当的信号分析框架后,您需要分析您的信号。例如,marsyas的AimC实现可用于比较语音。
我建议在你的计算机上安装marsyas并摆弄python示例脚本。
对于语音分析,您可以使用以下网络:
vqNetwork = ["Series/vqlizer", [
"AimPZFC/aimpzfc",
"AimHCL/aimhcl",
"AimLocalMax/aimlocalmax",
"AimSAI/aimsai",
"AimBoxes/aimBoxes",
"AimVQ/vq",
"Gain/g",
]
此网络会将您的音频数据转换为人耳处理的音频数据。之后,它使用矢量量化将许多可能的矢量减少到具有200个条目的非常特定的码本。然后,您可以将网络输出转换为可读字符(例如utf8),然后您可以使用字符串编辑距离(例如Levenshtein距离)进行比较。
另一种可能性是使用MFCC(梅尔频率倒谱系数)进行语音识别marsyas supports as well并使用某些东西,例如Dynamic Time Warping来比较输出。 This document很好地描述了这个过程。
答案 1 :(得分:0)
使用“Musicg”库,您可以比较两个语音(.wav 格式)文件。 使用 Wave 对象加载要在 pgm 中实例化的 wave 文件。 这里使用 FingerPrintSimilarity 函数你通过预先录制的 wav 文件来获取输出。 android gradle依赖: 实现组:'com.github.fracpete',名称:'musicg',版本:'1.4.2.2'
for more:
https://github.com/loisaidasam/musicg
sample code:
private void compareTempFile(String str) {
Wave w1 = new Wave(Environment.getExternalStorageDirectory().getAbsolutePath()+"/sample1.wav");
Wave w2 = new Wave(Environment.getExternalStorageDirectory().getAbsolutePath()+"/sample2.wav");
println("Wave 1 = "+w1.getWaveHeader());
println("Wave 2 = "+w2.getWaveHeader());
FingerprintSimilarity fpsc1 = w2.getFingerprintSimilarity(w1);
float scorec = fpsc1.getScore();
float simc= fpsc1.getSimilarity();
tvSim.setText(" Similarity = "+simc+"\nScore = "+scorec);
println("Score = "+scorec);
println("Similarity = "+simc);
}