明确文档中对于最后实际用于训练的数据要求。
/1_Voice Wake-up Data Collection Specification.pdf
- 手动切分数据
- 使用项目工程切分唤醒词数据
'''
给我写一个音频分割的 jupyter notebook 代码。
文件夹里面的每个音频,包含了多种命令词,需要把他们切分成不同的音频,每个音频都是一个文件。
所有的命令词如下:
- Hey Memo
- Take a picture
- Take a video
- Stop recording
- Pause
- Next
- Play
- Volume up
- Volume down
我们有个音频文件夹,包含所有收集的唤醒词和命令词音频数据。每个音频的原始命名为AUS_Perth_Male_40.wav, 也就是国家_城市_性别_年龄.wav
每个音频文件包含所有命令词语音片段,里面可能有错读的,也可能有其他的,只需要切分出正确读的音频文件并做好命名。
使用微软 asr 做语音识别,识别出正常的语音片段,然后切分并按文件夹保存。
使用微软 ASR 服务的时候,为了提高识别率需要将要识别的命令词作为热词添加到服务中。
有一些切分的要求:
- 避免发音错误:确保正确发音,不得有误读现象。
- 避免多余的声音:避免咳嗽、交谈或其他噪音。
- 呼吸和口腔声音:自然的呼吸和口腔声音是允许的,但不能在喘息时进行录音。
- 避免不自然的停顿:正常的呼吸停顿是允许的,但不应过长,停顿时间不应超过0.5秒。
- 避免口吃或中断:唤醒词应流畅发音,不应出现口吃或停顿。
每个音频文件应只包含⼀个唤醒词。
- 禁止空白音频文件。
- 避免语音截断:比如将“Hi Siri”剪辑为“Hi Si”。
避免:
- 录音文件在截切的时候,错误的剪切位置,导致包含了前面的词的部分。
- 唤醒词尾部被截断或丢失,唤醒词音频不完整
- 单个唤醒词说话停顿时间过长,明显大于500ms
- 单个音频文件包含多个唤醒词语音
按照以下格式保存最终音频:用户编号-命令词-命令词音频片段 命令词音频片段的命名为:编号_国家_城市_性别_年龄_命令词_语速_编号 文件结构如下 SPK001
SPK002
...
SPK009
SPK010
/HeyMemo
/SPK001_AUS_Perth_Male_40_HeyMemo_Fast_001.wav
/SPK001_AUS_Perth_Male_40_HeyMemo_Fast_002.wav
/SPK001_AUS_Perth_Male_40_HeyMemo_Normal_003.wav
/SPK001_AUS_Perth_Male_40_HeyMemo_Slow_004.wav
...
/Play
/Next
/TakeAPhoto
/StartRecording
...
最好每个录音文件切分保存后能使用微软的 ASR 再识别一次,看是否是准确的。
格式:16位,16KHz,单声道,wav文件。 '''
需要分步骤让我好调试,比如所有都好之后,先处理 1 个文件,我看没问题,最终才 run 整个文件夹。 以及其他你能想到的工程优化策略。
调研筛选目前比较的语音生成模型。设计合适的提示词。 模型调研报告:类似 ChatTTS,选用多个不一样的模型。 具体实现方案:
- 模型选用,Huggingface 托管,使用 api 调用。
- 具体目标:样本数量,分布(区域、性别、年龄、情感?)
- 音色控制:比如“美国,男性、20 岁、兴奋,正常语速”
- 语音生成和标签保存
- 校对和测试
- ...
后续真人实机数据 眼镜发售后,在征得用户许可的前提下可以保存用户和眼镜交互的所有录音。录音文件也会保留对应的文本。
- 根据唤醒和命令词,从中文本筛选出录音文件。
- 在录音文件中切分出我们需要的数据片段
- 打好标签,自动加入训练集
- 训练之后测试,给出测试报告,并更新模型
在 Hugging face 下载噪声数据集。按照工程要求切分噪声数据集。 数据集: 项目工程:
恒玄交付版本:2024.2.26
Looktech GitHub 训练工程:
测试报告
电脑上搭建测试环境,使用真人测试。 测试报告
在恒玄样机上进行测试。 测试报告