前言
决赛在即,各位老铁帮忙投我们一票呀!
团队名称:ECNU小分队
投票链接:https://vip.kongxuan.com/2021/pingancx/index.html
赛题介绍
2021年“创青春•交子杯”新网银行金融科技挑战赛,聚焦 AI算法领域,旨在鼓励选手运用前沿的人工智能技术解决金融科技等领域中的实际问题,激发选手创新能力,增强其动手能力。
比赛挑战题目为“文字的声音”,即利用TTS技术将文本通过模型转化为语音。该项技术在金融领域有较多应用,在客服、催收、案调等智能外呼场景中均有使用,高质量的语音具有良好的流畅度、轻重音把握、合理断句等特点。本赛题要求参赛者能训练出自然流畅的高质量文字转换语音的模型,模型需要转换的文字将被限制在一定范围内。
比赛链接:关注“象牙塔金融圈”公众号,点击挑战赛,即可参赛。
评测指标
初赛评分:
l 初赛评分包含作品得分和捐步得分,分别占90%和10%。
l 作品得分使用ASR模型在拼音级别计算字错误率(CER),CER将被归一化在0.001~1之间。ASR模型识别提交的音频为带声调的拼音,同时参考文本也转成对应的拼音,在识别拼音字符串和参考拼音串之间计算字符错误率。
l 综合得分为:(1-Normalize(CER))0.9+ step_score0.1
三段代码进TOP5
首先导入必要的库,读取测试数据。
1import zhtts
2from tqdm import tqdm
3import numpy as np
4import pandas as pd
5import re
6
7with open("dev.txt",'r',encoding="utf-8") as f:
8 txt = []
9 for line in f:
10 txt.append(line.strip())
接着是核心代码,第516号文本中出现一个不知道怎么发音的字,因此需要手动处理,这里不在赘述。
1for j in tqdm(range(len(txt))):
2 t = txt[j]
3 tts = zhtts.TTS(text2mel_name="TACOTRON")
4 t = t.split(' ')
5 s = t[-1]
6
7 ## 处理时间信息
8 ss = re.search("\d+:\d+-\d+:\d+", s)
9 if ss is not None:
10 ss = ss.group()
11 s = s.replace(ss, ss.split(':')[0]+'点至'+ss.split('-')[1].split(':')[0]+'点')
12
13 tts.text2wav(s, "./CHLL1/"+t[0]+".wav")
最后保存到CHLL1文件夹下面后,创建CHLL文件夹(记得修改为自己的队伍名称),运行如下py文件,调整音频的格式。
1import os
2import sys
3import subprocess
4from tqdm import tqdm
5
6path1 = './CHLL1/'
7path2 = './CHLL/'
8paths = os.listdir(path1)
9for i in tqdm(range(len(paths))):
10 s1 = path1 + paths[i]
11 s2 = path2 + paths[i]
12 os.system("sox {} -b 16 -r 16000 {}".format(s1, s2))
压缩为zip格式即可提交,大概需要10min左右,线上成绩为61.640,当然可以通过捐步分就可以前排啦!
总结
baseline主要使用了github上开源的框架zhtts, GitHub - Jackiexiao/zhtts: A demo of zh/Chinese Text to Speech system run on CPU in real time. 中文实时语音合成系统Demo ,仔细阅读源码会发现,思路与Great开源基本是一致的,当然里面也会有很多个性化的组件,具体怎么调整就需要不断的尝试。
感谢大家关注ChallengeHub公众号,加入ChallengeHub粉丝群一起学习一起进步。