微信的聊天记录导出一直是挺麻烦的事, 尤其是在iphone上.
前几天想导出一部分语音聊天记录, 就到iphone的文件系统里去找了一下,
发现微信的语音记录存放在/var/mobile/Applications/{app id}/Documents/{user id}/Audio/{friend id}/*.aud
问题是, 微信将两人互相的对话音频存在一个目录下, 不知道如何区分, 去逆向微信的聊天记录格式恐怕比较困难, 于是想到使用上学期做的说话人识别(Speaker Recognition)系统来自动处理这个问题.
google一下发现微信所存储的音频格式为headless AMR. 因此手动为每个文件添加AMR head:
然后就可以将其转为正常的wav格式了:
手动标注一部分数据, 分别放在以两人名字命名的目录里:
两人的训练数据总时间分别为21s与15s, 未消除静音部分
Speaker Recognition项目的代码放在github 上, 由于是course project而且拼的是效果, 所以我们的代码写的还挺乱的..
关于Speaker Recognition的原理, 可以看我们的 presentation slides 和 report
今天为其增加了命令行工具, 方便进行训练和预测.
训练:
预测:
其输出的预测结果每一行形如: "/tmp/wechat/546.wav -> y" 根据输出构造shell命令, 把音频按分类结果分别放到不同目录中:
现在x与y两人的所有音频都被放到了x, y两个目录里, 为了方便人工验证正确性, 可以将一个人的所有音频合并为一个wav:
结果准确率为100%..(数据比较少)
大家都去收集好(nv)友(shen)的声音吧!