update scripts
Browse files- .gitignore +0 -1
- lib/models/mac/llm.py +1 -0
- lib/utils.py +6 -1
- requirement.txt +8 -1
- scripts/asr_utils.py +3 -3
- scripts/audio_utils.py +12 -14
- scripts/caculate_cer.py +1 -1
- scripts/csv/fine-tune_whisper.csv +1 -85
- scripts/csv/funasr_quant.csv +81 -81
- scripts/download_hf.py +3 -3
- scripts/run_funasr_quant.py +48 -18
- scripts/run_whisper.py +79 -7
- scripts/run_whisper_finetuned.py +110 -5
- scripts/run_whisper_finetuned_with_punc_ov.py +2 -2
- temp.py +33 -47
- test_data/audios.py +50 -3
- test_data/{dataset_aishell → dataset}/dataset.txt +0 -0
- test_data/recordings/text/test_asr_zh_with_index.txt +1 -1
- tests/{test_models → test_app_models}/__init__.py +0 -0
- tests/{test_models → test_app_models}/conftest.py +0 -0
- tests/{test_models → test_app_models}/test_funasr.py +4 -2
- tests/{test_models → test_app_models}/test_llm.py +7 -7
- tests/{test_models → test_app_models}/test_tts.py +7 -3
- tests/{test_models → test_app_models}/test_whisper.py +4 -2
.gitignore
CHANGED
|
@@ -2,7 +2,6 @@
|
|
| 2 |
.idea
|
| 3 |
__pycache__/
|
| 4 |
*.csv
|
| 5 |
-
*csv*
|
| 6 |
*.mp3
|
| 7 |
*.wav
|
| 8 |
*.flac
|
|
|
|
| 2 |
.idea
|
| 3 |
__pycache__/
|
| 4 |
*.csv
|
|
|
|
| 5 |
*.mp3
|
| 6 |
*.wav
|
| 7 |
*.flac
|
lib/models/mac/llm.py
CHANGED
|
@@ -57,6 +57,7 @@ class QwenTranslator:
|
|
| 57 |
self.llm = Llama(
|
| 58 |
model_path=str(model_path),
|
| 59 |
chat_format="chatml",
|
|
|
|
| 60 |
verbose=False)
|
| 61 |
self.sys_prompt_en = system_prompt_en
|
| 62 |
self.sys_prompt_zh = system_prompt_zh
|
|
|
|
| 57 |
self.llm = Llama(
|
| 58 |
model_path=str(model_path),
|
| 59 |
chat_format="chatml",
|
| 60 |
+
n_gpu_layers=-1,
|
| 61 |
verbose=False)
|
| 62 |
self.sys_prompt_en = system_prompt_en
|
| 63 |
self.sys_prompt_zh = system_prompt_zh
|
lib/utils.py
CHANGED
|
@@ -65,10 +65,15 @@ def cmd(command: str, check=True, capture_output=False) -> CompletedProcess:
|
|
| 65 |
print(ret.stdout)
|
| 66 |
return ret
|
| 67 |
|
|
|
|
| 68 |
def clean_text_for_comparison_zh(text):
|
|
|
|
| 69 |
symbol_pattern = "[ ,。、!?::‘’-《》!?;,\n]"
|
| 70 |
to = ""
|
| 71 |
-
|
|
|
|
|
|
|
|
|
|
| 72 |
|
| 73 |
def clean_text_for_comparison_en(text):
|
| 74 |
symbol_pattern = "[,.\n]"
|
|
|
|
| 65 |
print(ret.stdout)
|
| 66 |
return ret
|
| 67 |
|
| 68 |
+
import cn2an
|
| 69 |
def clean_text_for_comparison_zh(text):
|
| 70 |
+
"""移除中文标点,并把所有数字都转换成中文的形式"""
|
| 71 |
symbol_pattern = "[ ,。、!?::‘’-《》!?;,\n]"
|
| 72 |
to = ""
|
| 73 |
+
text = re.sub(symbol_pattern, to, text).lower()
|
| 74 |
+
if re.search(r"\d", text):
|
| 75 |
+
text = cn2an.transform(text, "an2cn")
|
| 76 |
+
return text
|
| 77 |
|
| 78 |
def clean_text_for_comparison_en(text):
|
| 79 |
symbol_pattern = "[,.\n]"
|
requirement.txt
CHANGED
|
@@ -3,4 +3,11 @@ textdistance
|
|
| 3 |
pytest-playwright
|
| 4 |
pygame
|
| 5 |
librosa
|
| 6 |
-
tabulate
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3 |
pytest-playwright
|
| 4 |
pygame
|
| 5 |
librosa
|
| 6 |
+
tabulate
|
| 7 |
+
jieba
|
| 8 |
+
cn2an
|
| 9 |
+
pypinyin
|
| 10 |
+
ordered_set
|
| 11 |
+
spacy
|
| 12 |
+
num2words
|
| 13 |
+
en-core-web-sm
|
scripts/asr_utils.py
CHANGED
|
@@ -8,7 +8,7 @@ import subprocess
|
|
| 8 |
from subprocess import CompletedProcess
|
| 9 |
|
| 10 |
def add_text_index():
|
| 11 |
-
text_file = '../test_data/text/test_asr_zh.txt'
|
| 12 |
index = 1
|
| 13 |
with open(text_file, encoding='utf-8') as f:
|
| 14 |
for line in f:
|
|
@@ -49,7 +49,7 @@ def write_csv(rows, output_csv):
|
|
| 49 |
writer.writerows(rows)
|
| 50 |
|
| 51 |
def print_text_and_audio_length():
|
| 52 |
-
text_file = '../test_data/text/test_asr_zh_with_index.txt'
|
| 53 |
audio_folder = '../test_data/recordings'
|
| 54 |
output_csv = 'csv/text_audio_length.csv'
|
| 55 |
rows = []
|
|
@@ -72,7 +72,7 @@ def get_text_distance(text1, text2):
|
|
| 72 |
return d, nd, diff
|
| 73 |
|
| 74 |
def get_origin_text_dict():
|
| 75 |
-
text_file = '../test_data/text/test_asr_zh_with_index.txt'
|
| 76 |
text_dict = {}
|
| 77 |
for idx, text in get_lines_with_index(text_file):
|
| 78 |
text_dict[idx] = text
|
|
|
|
| 8 |
from subprocess import CompletedProcess
|
| 9 |
|
| 10 |
def add_text_index():
|
| 11 |
+
text_file = '../test_data/recordings/text/test_asr_zh.txt'
|
| 12 |
index = 1
|
| 13 |
with open(text_file, encoding='utf-8') as f:
|
| 14 |
for line in f:
|
|
|
|
| 49 |
writer.writerows(rows)
|
| 50 |
|
| 51 |
def print_text_and_audio_length():
|
| 52 |
+
text_file = '../test_data/recordings/text/test_asr_zh_with_index.txt'
|
| 53 |
audio_folder = '../test_data/recordings'
|
| 54 |
output_csv = 'csv/text_audio_length.csv'
|
| 55 |
rows = []
|
|
|
|
| 72 |
return d, nd, diff
|
| 73 |
|
| 74 |
def get_origin_text_dict():
|
| 75 |
+
text_file = '../test_data/recordings/text/test_asr_zh_with_index.txt'
|
| 76 |
text_dict = {}
|
| 77 |
for idx, text in get_lines_with_index(text_file):
|
| 78 |
text_dict[idx] = text
|
scripts/audio_utils.py
CHANGED
|
@@ -13,18 +13,16 @@ def cmd(command: str, check=True, capture_output=False) -> CompletedProcess:
|
|
| 13 |
print(ret.stdout)
|
| 14 |
return ret
|
| 15 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 16 |
|
| 17 |
-
|
| 18 |
-
|
| 19 |
-
|
| 20 |
-
|
| 21 |
-
file_name = f.name
|
| 22 |
-
print(file_name)
|
| 23 |
-
for i in [0, 5, 10, 15]:
|
| 24 |
-
new_name = f"{f.name.split('.')[0]}-{i}.wav"
|
| 25 |
-
command=f"ffmpeg -i {f} -ss 00:00:{str(i).zfill(2)} -t 00:00:05 {audios_5s/new_name}"
|
| 26 |
-
cmd(command)
|
| 27 |
-
for i in [0, 10, 20, 30]:
|
| 28 |
-
new_name = f"{f.name.split('.')[0]}-{i}.wav"
|
| 29 |
-
command = f"ffmpeg -i {f} -ss 00:00:{str(i).zfill(2)} -t 00:00:10 {audios_10s/new_name}"
|
| 30 |
-
cmd(command)
|
|
|
|
| 13 |
print(ret.stdout)
|
| 14 |
return ret
|
| 15 |
|
| 16 |
+
def to_wav(folder: Path):
|
| 17 |
+
for file in folder.glob("*.mp3"):
|
| 18 |
+
# print(file)
|
| 19 |
+
wav_path = folder / f'{file.stem}.wav'
|
| 20 |
+
if not wav_path.exists():
|
| 21 |
+
command = f"ffmpeg -i {file} -ac 1 -ar 16000 {wav_path}"
|
| 22 |
+
# print(command)
|
| 23 |
+
cmd(command)
|
| 24 |
|
| 25 |
+
|
| 26 |
+
|
| 27 |
+
if __name__ == '__main__':
|
| 28 |
+
to_wav(Path("/Users/jeqin/work/test/audios/short_audios"))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
scripts/caculate_cer.py
CHANGED
|
@@ -27,7 +27,7 @@ def calculate_distance(reference: str, hypothesis: str):
|
|
| 27 |
|
| 28 |
if __name__ == '__main__':
|
| 29 |
import cn2an
|
| 30 |
-
results_list = json.load(open("csv/
|
| 31 |
count = 0
|
| 32 |
distance_sum = 0
|
| 33 |
reference_sum = 0
|
|
|
|
| 27 |
|
| 28 |
if __name__ == '__main__':
|
| 29 |
import cn2an
|
| 30 |
+
results_list = json.load(open("csv/funasr_wenet_results.json", encoding="utf-8"))
|
| 31 |
count = 0
|
| 32 |
distance_sum = 0
|
| 33 |
reference_sum = 0
|
scripts/csv/fine-tune_whisper.csv
CHANGED
|
@@ -1,86 +1,2 @@
|
|
| 1 |
file_name,time,inference_result
|
| 2 |
-
|
| 3 |
-
2.wav,1.097,你可真是个天才把这么简单的事情都搞砸了,0,0.0,你可真是个天才把这么简单的事情都搞砸了
|
| 4 |
-
3.wav,1.235,因网络问题远程讲着音频中断我们切到备用方案共享幻灯片,1,0.038,因网络问题远程讲[-者-]{+着+}音频中断我们切到备用方案共享幻灯片
|
| 5 |
-
4.wav,1.273,这就好比用大炮打蚊子资源分配严重不均衡需要细腻度调度,1,0.038,这就好比用大炮打蚊子资源分配严重不均衡需要细[-粒-]{+腻+}度调度
|
| 6 |
-
5.wav,1.074,言归正传我们来讨论一下核心问题,0,0.0,言归正传我们来讨论一下核心问题
|
| 7 |
-
6.wav,1.081,这有点超出了我们今天讨论的范围,0,0.0,这有点超出了我们今天讨论的范围
|
| 8 |
-
7.wav,1.043,他的年收入约为一百万人民币,0,0.0,他的年收入约为一百万人民币
|
| 9 |
-
8.wav,1.147,下一位演讲者是来自斯坦福大学计算机科学系的张明教授,0,0.0,下一位演讲者是来自斯坦福大学计算机科学系的张明教授
|
| 10 |
-
9.wav,1.182,请各位将手机调至静音模式演讲结束后有十五分钟提问时间,0,0.0,请各位将手机调至静音模式演讲结束后有十五分钟提问时间
|
| 11 |
-
10.wav,1.115,茶歇将在十点三十分开始地联在二楼休息区,1,0.053,茶歇将在十点三十分开始地[-点-]{+联+}在二楼休息区
|
| 12 |
-
11.wav,1.07,本合同自双方签字盖章之日起生效,0,0.0,本合同自双方签字盖章之日起生效
|
| 13 |
-
12.wav,1.196,政府正在采取措施刺激经济增长和创造就业机会,0,0.0,政府正在采取措施刺激经济增长和创造就业机会
|
| 14 |
-
13.wav,1.154,今天中午我们点外卖吧我想吃宫保鸡丁和麻婆豆腐,0,0.0,今天中午我们点外卖吧我想吃宫保鸡丁和麻婆豆腐
|
| 15 |
-
14.wav,1.405,医生建议我多吃粗粮比如燕麦和紫薯少吃高油高糖的油炸食品像炸鸡和甜甜圈,0,0.0,医生建议我多吃粗粮比如燕麦和紫薯少吃高油高糖的油炸食品像炸鸡和甜甜圈
|
| 16 |
-
15.wav,1.235,本方案采用液构计算架构结合GPU与FPA加速漳量运算,3,0.111,本方案采用[-异-]{+液+}构计算架构结合gpu与fp[-g-]a加速[-张-]{+漳+}量运算
|
| 17 |
-
16.wav,1.28,推力延迟稳定在五毫秒以内吞吐量提升百分之四十功耗降低一点八瓦,10,0.357,推[-理-]{+力+}延迟稳定在[-5-]{+五+}毫秒以内吞吐量提升[-40%-]{+百分之四十+}功耗降低[-1.8-]{+一点八+}瓦
|
| 18 |
-
17.wav,1.325,相比sota模型我们的方法在小样本场景下召回率高出十二个百分点且参数量仅为其三分之一,2,0.048,相比sota模型我们的方法在小样本场景下召回率高出[-12-]{+十二+}个百分点且参数量仅为其三分之一
|
| 19 |
-
18.wav,1.301,当解脸并发数超过一万时内存带宽会呈平静导致伪延齿急剧上升,12,0.387,当[-节点-]{+解脸+}并发数超过[-10000-]{+一万+}时内存带宽会[-成瓶颈-]{+呈平静+}导致[-尾-]{+伪+}延[-迟-]{+齿+}急剧上升
|
| 20 |
-
19.wav,1.477,请看图三蓝色柱是基线模型红色线是我们的优化结果交叉点表明在第十五轮迭代后优势显著,3,0.075,请看图[-3-]{+三+}蓝色柱是基线模型红色线是我们的优化结果交叉点表明在第[-15-]{+十五+}轮迭代后优势显著
|
| 21 |
-
20.wav,1.261,您提到模型泛化性提升是否在跨模态数据上验证过量化指标是多少,0,0.0,您提到模型泛化性提升是否在跨模态数据上验证过量化指标是多少
|
| 22 |
-
21.wav,1.338,容我追问一点如果输入数据存在对抗样本您方案的鲁邦性如何保证失效概率有测试吗,1,0.027,容我追问一点如果输入数据存在对抗样本您方案的鲁[-棒-]{+邦+}性如何保证失效概率有测试吗
|
| 23 |
-
22.wav,1.254,抱歉打断您说的动态简直是指训练中还是推理中预值是自适应的吗,3,0.103,抱歉打断您说的动态[-剪枝-]{+简直+}是指训练中还是推理中[-阈-]{+预+}值是自适应的吗
|
| 24 |
-
23.wav,1.242,成本效益是否可行不属这种定制芯片需要牛片费用中小客户怎么承担,3,0.1,成本效益是否可行[-部署-]{+不属+}这种定制芯片需要[-流-]{+牛+}片费用中小客户怎么承担
|
| 25 |
-
24.wav,1.263,我补充一个角度隐私计算领域也在用类似思路是否可能跨领域合作,0,0.0,我补充一个角度隐私计算领域也在用类似思路是否可能跨领域合作
|
| 26 |
-
25.wav,1.259,端到端优化流水线涵盖数据清洗特征工程模型压缩部署监控,0,0.0,端到端优化流水线涵盖数据清洗特征工程模型压缩部署监控
|
| 27 |
-
26.wav,1.087,请检查代码库中的依赖向冲突问题,1,0.067,请检查代码库中的依赖[-项-]{+向+}冲突问题
|
| 28 |
-
27.wav,1.125,这个电路板集成了微控制器传感器和无线通信模块,0,0.0,这个电路板集成了微控制器传感器和无线通信模块
|
| 29 |
-
28.wav,1.132,区块链技术的核心在于去中心化和加密安全性,0,0.0,区块链技术的核心在于去中心化和加密安全性
|
| 30 |
-
29.wav,1.11,需符合等保三级要求数据出境要走安全评估,0,0.0,需符合等保三级要求数据出境要走安全评估
|
| 31 |
-
30.wav,1.081,最新数据显示消费者信心指数有所回升,0,0.0,最新数据显示消费者信心指数有所回升
|
| 32 |
-
31.wav,1.142,专家预测新能源汽车市场将迎来爆发式增长,0,0.0,专家预测新能源汽车市场将迎来爆发式增长
|
| 33 |
-
32.wav,1.271,多模态大模型能够同时处理文本图像和音频信号实现真正的跨模态理解,0,0.0,多模态大模型能够同时处理文本图像和音频信号实现真正的跨模态理解
|
| 34 |
-
33.wav,1.252,联邦学习可以在保护用户隐私的前提下实现分布式模型的协同训练,0,0.0,联邦学习可以在保护用户隐私的前提下实现分布式模型的协同训练
|
| 35 |
-
34.wav,1.195,我们研发的五十量子比特处理器在特定算法上展现出了量子优越性,0,0.0,我们研发的五十量子比特处理器在特定算法上展现出了量子优越性
|
| 36 |
-
35.wav,1.17,变分量子本真值求解器在化学模拟中显示出巨大潜力,1,0.043,变分量子本[-征-]{+真+}值求解器在化学模拟中显示出巨大潜力
|
| 37 |
-
36.wav,1.195,边缘AI推理的延迟已经可以控制在十毫秒以内满足实时应用需求,0,0.0,边缘ai推理的延迟已经可以控制在十毫秒以内满足实时应用需求
|
| 38 |
-
37.wav,1.304,我们设计的新型神经网诺压缩算法在保持精度的同时将模型大小减少了百分之七十,1,0.028,我们设计的新型神经网[-络-]{+诺+}压缩算法在保持精度的同时将模型大小减少了百分之七十
|
| 39 |
-
38.wav,1.31,损失函数结合了交叉伤损失和对比损失权重系数设置为零点三和零点七,1,0.032,损失函数结合了交叉[-熵-]{+伤+}损失和对比损失权重系数设置为零点三和零点七
|
| 40 |
-
39.wav,1.372,在五个标准数据级上的实验结果表明我们的方法平均比现有最佳方法提升了二点三个百分点,1,0.025,在五个标准数据[-集-]{+级+}上的实验结果表明我们的方法平均比现有最佳方法提升了二点三个百分点
|
| 41 |
-
40.wav,1.294,消融食盐证实了每个模块的有效性移除注意力机制会导致性能下降百分之四点六,2,0.057,消融[-实验-]{+食盐+}证实了每个模块的有效性移除注意力机制会导致性能下降百分之四点六
|
| 42 |
-
41.wav,1.198,模型的参数量为一点二亿在八张一百显卡上训练了七十二小时,4,0.138,模型的参数量为一点二亿在八张[-a100-]{+一百+}显卡上训练了七十二小时
|
| 43 |
-
42.wav,1.052,总之搞定了数据倾斜性能就上去了,0,0.0,总之搞定了数据倾斜性能就上去了
|
| 44 |
-
43.wav,1.541,OpenAI Whisper需要FFMPEG的环境FFMPEG是一个开源的跨平台因视频处理工具和框架可以用来录制转换和流式传输音视频内容,2,0.029,openai[---]whisper需要ffmpeg的环境ffmpeg是一个开源的跨平台[-音-]{+因+}视频处理工具和框架可以用来录制转换和流式传输音视频内容
|
| 45 |
-
44.wav,1.242,采用Transformer训练到训练模型可以实现针对不同的语言处理任务,4,0.114,采用transformer[-序列-]{+训练+}到[-序列-]{+训练+}模型可以实现针对不同的语言处理任务
|
| 46 |
-
45.wav,1.303,Transformer架构在自然语言处理中的成功应用已经彻底改变了预训练模型的范式,0,0.0,transformer架构在自然语言处理中的成功应用已经彻底改变了预训练模型的范式
|
| 47 |
-
46.wav,1.238,请大家注意workshop材料已经上传至会议系统代码仓库链接在附入页,1,0.029,请大家注意workshop材料已经上传至会议系统代码仓库链接在附[-录-]{+入+}页
|
| 48 |
-
47.wav,1.285,别造轮子了直接调用优劳威武开元库的预训练权重快速迭代才是王道,7,0.219,别造轮子了直接调用[-yolov5-]{+优劳威武+}开[-源-]{+元+}库的预训练权重快速迭代才是王道
|
| 49 |
-
48.wav,1.225,请确保您的设备已连接到五GHz wifi频段亦获得最佳性能,3,0.103,请确保您的设备已连接到[-5-]{+五+}ghzwi[---]fi频段[-以-]{+亦+}获得最佳性能
|
| 50 |
-
49.wav,1.434,我们提出了一种基于对比学习的自监督方法在ImageNet数据集上达到了百分之九十二点五的准确率,0,0.0,我们提出了一种基于对比学习的自监督方法在imagenet数据集上达到了百分之九十二点五的准确率
|
| 51 |
-
50.wav,1.355,据比利弗尔在代码生成和多部推理任务上展现出令人印象深刻的能力,6,0.2,[-gpt-4-]{+据比利弗尔+}在代码生成和多[-步-]{+部+}推理任务上展现出令人印象深刻的能力
|
| 52 |
-
51.wav,1.487,若在高病发场景下为启用我们的动态缓存机制即使用RDMA网络延迟也可能因CPU调度增强而恶化,4,0.089,若在高[-并-]{+病+}发场景下[-未-]{+为+}启用我们的动态缓存机制即使用rdma网络延迟也可能因cpu调度[-争抢-]{+增强+}而恶化
|
| 53 |
-
52.wav,1.144,准确说峰值钻力是两百托斯不是刚才说的一百五,11,0.458,准确说峰值[-算-]{+钻+}力是[-200tops-]{+两百托斯+}不是刚才说的[-150-]{+一百五+}
|
| 54 |
-
53.wav,1.233,秦始皇营镇书童文车童轨奠定了中国大一统的基础,4,0.182,秦始皇[-嬴政-]{+营镇+}书[-同-]{+童+}文车[-同-]{+童+}轨奠定了中国大一统的基础
|
| 55 |
-
54.wav,1.278,诸葛亮在出师表中写道鞠躬尽瘁死而后已成为后世臣子的楷模,0,0.0,诸葛亮在出师表中写道鞠躬尽瘁死而后已成为后世臣子的楷模
|
| 56 |
-
55.wav,1.227,李白的举头望明月低头四故乡是连三岁孩童都能背诵的诗句,1,0.038,李白的举头望明月低头[-思-]{+四+}故乡是连三岁孩童都能背诵的诗句
|
| 57 |
-
56.wav,1.268,孔子曾说己所不欲勿施于人这简单的八个字构成了儒家伦理的基石,0,0.0,孔子曾说己所不欲勿施于人这简单的八个字构成了儒家伦理的基石
|
| 58 |
-
57.wav,1.233,王羲之背后人尊为殊胜其代表作南庭集序被誉为天下第一行书,5,0.185,王羲之[-被-]{+背+}后人尊为[-书圣-]{+殊胜+}其代表作[-兰亭-]{+南庭+}集序被誉为天下第一行书
|
| 59 |
-
58.wav,1.298,我们要学习跑丁解牛的精神掌握事物的客观规律才能游刃有馀,2,0.074,我们要学习[-庖-]{+跑+}丁解牛的精神掌握事物的客观规律才能游刃有[-余-]{+馀+}
|
| 60 |
-
59.wav,1.377,项羽在鸿门宴上优柔寡断放走了刘邦最终兵败乌江自吻,1,0.042,项羽在鸿门宴上优柔寡断放走了刘邦最终兵败乌江自[-刎-]{+吻+}
|
| 61 |
-
60.wav,1.326,在杭州西湖畔人们总会想起苏氏治理西湖修筑苏堤的往事,1,0.04,在杭州西湖畔人们总会想起苏[-轼-]{+氏+}治理西湖修筑苏堤的往事
|
| 62 |
-
61.wav,1.191,我计划去爱菲尔铁塔和卢浮宫参观,1,0.067,我计划去[-埃-]{+爱+}菲尔铁塔和卢浮宫参观
|
| 63 |
-
62.wav,1.219,莎士比亚的戏剧深刻地探讨了人性的复杂性,0,0.0,莎士比亚的戏剧深刻地探讨了人性的复杂性
|
| 64 |
-
63.wav,1.111,这个消息让他丈二和尚摸不着头脑,0,0.0,这个消息让他丈二和尚摸不着头脑
|
| 65 |
-
64.wav,1.137,画龙点睛之笔让整个设计焕然一新,0,0.0,画龙点睛之笔让整个设计焕然一新
|
| 66 |
-
65.wav,1.063,这是卡泊子技术必须自主研发,1,0.077,这是卡[-脖-]{+泊+}子技术必须自主研发
|
| 67 |
-
66.wav,1.175,这幅画作以其独特的色彩运用和构图技巧而闻名,0,0.0,这幅画作以其独特的色彩运用和构图技巧而闻名
|
| 68 |
-
67.wav,1.091,患者主塑间歇性胸痛放射至左臂,1,0.071,患者主[-诉-]{+塑+}间歇性胸痛放射至左臂
|
| 69 |
-
68.wav,1.305,患者有冠状动脉周样硬化性心脏病病史十年慢性阻塞性肺疾病病史五年,1,0.032,患者有冠状动脉[-粥-]{+周+}样硬化性心脏病病史十年慢性阻塞性肺疾病病史五年
|
| 70 |
-
69.wav,1.144,建议行冠状动脉造影检查必要时植入支架,0,0.0,建议行冠状动脉造影检查必要时植入支架
|
| 71 |
-
70.wav,1.182,患者需低盐低脂糖尿病饮食监测血压血糖变化,0,0.0,患者需低盐低脂糖尿病饮食监测血压血糖变化
|
| 72 |
-
71.wav,1.332,胸部细梯频道显示双肺散在膜玻璃样密度以胸膜下分布为主,6,0.222,胸部[-ct平扫-]{+细梯频道+}显示双肺散在[-磨-]{+膜+}玻璃样密度[-影-]以胸膜下分布为主
|
| 73 |
-
72.wav,1.423,知识产权归属约定义方在履行本合同过程中所产生的全部智力成果其知识产权归甲方所有,2,0.05,知识产权归属约定[-乙-]{+义+}方在履行本合同过程中所产生的全部智力成果其知识产权[-均-]归甲方所有
|
| 74 |
-
73.wav,1.507,双方应履行本合同法生争议的应首先通过友好协商解决协商不成的任何一方均有权向有管辖权的人民法院提起诉讼,2,0.04,双方[-因-]{+应+}履行本合同[-发-]{+法+}生争议的应首先通过友好协商解决协商不成的任何一方均有权向有管辖权的人民法院提起诉讼
|
| 75 |
-
74.wav,1.289,被告在法定期限内未提交答编状亦未到庭参加诉讼本院依法缺席审理,1,0.033,被告在法定期限内未提交答[-辩-]{+编+}状亦未到庭参加诉讼本院依法缺席审理
|
| 76 |
-
75.wav,1.58,原告向本院提出诉讼请求一判令被告支付货款人民币五十万八千元及逾期付款利息二判令被告承担本案的诉讼费用,0,0.0,原告向本院提出诉讼请求一判令被告支付货款人民币五十万八千元及逾期付款利息二判令被告承担本案的诉讼费用
|
| 77 |
-
76.wav,1.545,被执行人未按执行通知履行法律文书确定的义务人民法院有权查封扣押冻结拍卖被执行人的财产,0,0.0,被执行人未按执行通知履行法律文书确定的义务人民法院有权查封扣押冻结拍卖被执行人的财产
|
| 78 |
-
77.wav,0.981,这个视频太上头了,0,0.0,这个视频太上头了
|
| 79 |
-
78.wav,0.942,他真是个社恐,0,0.0,他真是个社恐
|
| 80 |
-
79.wav,1.064,简直了这躺平的状态也太佛系了吧,0,0.0,简直了这躺平的状态也太佛系了吧
|
| 81 |
-
80.wav,1.044,这个瓜有点大我得去吃瓜了,0,0.0,这个瓜有点大我得去吃瓜了
|
| 82 |
-
81.wav,1.074,别内卷了咱们还是多交流交流吧,0,0.0,别内卷了咱们还是多交流交流吧
|
| 83 |
-
82.wav,1.347,第二个公司我们成立了中国黄烨在中国黄烨的创业经验中有很多的经验也是可以在这儿跟大家进行分享的,2,0.043,第二个公司我们成立了中国黄[-页-]{+烨+}在中国黄[-页-]{+烨+}的创业经验中有很多的经验也是可以在这儿跟大家进行分享的
|
| 84 |
-
83.wav,1.314,对于大部分在接触微积分之前主要的学习经验就是刷题甚至是连题也不刷的同学们来说,0,0.0,对于大部分在接触微积分之前主要的学习经验就是刷题甚至是连题也不刷的同学们来说
|
| 85 |
-
84.wav,1.472,说了两个小时没人听懂我在说什么最后二十三个人反对一个人同意这一个人就说马云你这样做你就试试看不行的话赶紧逃回来还来得及,0,0.0,说了两个小时没人听懂我在说什么最后二十三个人反对一个人同意这一个人就说马云你这样做你就试试看不行的话赶紧逃回来还来得及
|
| 86 |
-
85.wav,1.2,晚上想想是热血沸腾真好第二天早上骑个自行车又上班去了对吧,0,0.0,晚上想想是热血沸腾真好第二天早上骑个自行车又上班去了对吧
|
|
|
|
| 1 |
file_name,time,inference_result
|
| 2 |
+
49.wav,4.025,我们提出了一种基于对比学习的自监督方法在ImageNet数据集上达到了九百二十五的转确率,6,0.128,我们提出了一种基于对比学习的自监督方法在imagenet数据集上达到了{+九+}百[-分之九-]{+二+}十[-二点-]五的[-准-]{+转+}确率
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
scripts/csv/funasr_quant.csv
CHANGED
|
@@ -1,86 +1,86 @@
|
|
| 1 |
file_name,time,inference_result
|
| 2 |
-
1.wav,
|
| 3 |
-
2.wav,0.
|
| 4 |
-
3.wav,0.
|
| 5 |
4.wav,0.419,这就好比用大炮打蚊子,资源分配严重不均衡,需要细腻度调度。,1,0.038,这就好比用大炮打蚊子资源分配严重不均衡需要细[-粒-]{+腻+}度调度
|
| 6 |
-
5.wav,0.
|
| 7 |
-
6.wav,0.
|
| 8 |
-
7.wav,0.
|
| 9 |
-
8.wav,0.
|
| 10 |
-
9.wav,0.
|
| 11 |
-
10.wav,0.
|
| 12 |
11.wav,0.293,本合同自双方签字盖章之日起生效。,0,0.0,本合同自双方签字盖章之日起生效
|
| 13 |
-
12.wav,0.
|
| 14 |
-
13.wav,0.
|
| 15 |
-
14.wav,0.
|
| 16 |
-
15.wav,0.
|
| 17 |
-
16.wav,0.
|
| 18 |
-
17.wav,0.
|
| 19 |
-
18.wav,0.
|
| 20 |
-
19.wav,0.
|
| 21 |
-
20.wav,0.
|
| 22 |
-
21.wav,0.
|
| 23 |
-
22.wav,0.
|
| 24 |
-
23.wav,0.
|
| 25 |
-
24.wav,0.
|
| 26 |
-
25.wav,0.
|
| 27 |
-
26.wav,0.
|
| 28 |
-
27.wav,0.
|
| 29 |
-
28.wav,0.
|
| 30 |
-
29.wav,0.
|
| 31 |
-
30.wav,0.
|
| 32 |
31.wav,0.349,专家预测,新能源汽车市场将迎来爆发式增长。,0,0.0,专家预测新能源汽车市场将迎来爆发式增长
|
| 33 |
-
32.wav,0.
|
| 34 |
-
33.wav,0.
|
| 35 |
-
34.wav,0.
|
| 36 |
-
35.wav,0.
|
| 37 |
-
36.wav,0.
|
| 38 |
-
37.wav,0.
|
| 39 |
-
38.wav,0.
|
| 40 |
-
39.wav,0.
|
| 41 |
-
40.wav,0.
|
| 42 |
-
41.wav,0.
|
| 43 |
-
42.wav,0.
|
| 44 |
-
43.wav,0.
|
| 45 |
-
44.wav,0.
|
| 46 |
-
45.wav,0.
|
| 47 |
-
46.wav,0.
|
| 48 |
-
47.wav,0.
|
| 49 |
-
48.wav,0.
|
| 50 |
-
49.wav,0.
|
| 51 |
-
50.wav,0.
|
| 52 |
-
51.wav,0.
|
| 53 |
-
52.wav,0.
|
| 54 |
-
53.wav,0.
|
| 55 |
-
54.wav,0.
|
| 56 |
-
55.wav,0.
|
| 57 |
-
56.wav,0.
|
| 58 |
-
57.wav,0.
|
| 59 |
-
58.wav,0.
|
| 60 |
-
59.wav,0.
|
| 61 |
-
60.wav,0.
|
| 62 |
-
61.wav,0.
|
| 63 |
-
62.wav,0.
|
| 64 |
-
63.wav,0.
|
| 65 |
-
64.wav,0.
|
| 66 |
-
65.wav,0.
|
| 67 |
-
66.wav,0.
|
| 68 |
-
67.wav,0.
|
| 69 |
-
68.wav,0.
|
| 70 |
-
69.wav,0.
|
| 71 |
-
70.wav,0.
|
| 72 |
-
71.wav,0.
|
| 73 |
-
72.wav,0.
|
| 74 |
-
73.wav,0.
|
| 75 |
-
74.wav,0.
|
| 76 |
-
75.wav,0.
|
| 77 |
-
76.wav,0.
|
| 78 |
77.wav,0.179,这个视频太上头了。,0,0.0,这个视频太上头了
|
| 79 |
-
78.wav,0.
|
| 80 |
-
79.wav,0.
|
| 81 |
-
80.wav,0.
|
| 82 |
-
81.wav,0.
|
| 83 |
-
82.wav,0.
|
| 84 |
-
83.wav,0.
|
| 85 |
-
84.wav,0.
|
| 86 |
-
85.wav,0.
|
|
|
|
| 1 |
file_name,time,inference_result
|
| 2 |
+
1.wav,1.93,您这车开的真够稳的,蜗牛都超车了。,1,0.067,您这车开[-得-]{+的+}真够稳的蜗牛都超车了
|
| 3 |
+
2.wav,0.302,你可真是个天才,把这么简单的事情都搞砸了。,0,0.0,你可真是个天才把这么简单的事情都搞砸了
|
| 4 |
+
3.wav,0.454,因网络问题,远程讲者音频中断,我们切到备用方案,共享幻灯片。,0,0.0,因网络问题远程讲者音频中断我们切到备用方案共享幻灯片
|
| 5 |
4.wav,0.419,这就好比用大炮打蚊子,资源分配严重不均衡,需要细腻度调度。,1,0.038,这就好比用大炮打蚊子资源分配严重不均衡需要细[-粒-]{+腻+}度调度
|
| 6 |
+
5.wav,0.28,言归正传,我们来讨论一下核心问题。,0,0.0,言归正传我们来讨论一下核心问题
|
| 7 |
+
6.wav,0.24,这有点超出了我们今天讨论的范围。,0,0.0,这有点超出了我们今天讨论的范围
|
| 8 |
+
7.wav,0.248,他的年收入约为一百万人民币。,0,0.0,他的年收入约为一百万人民币
|
| 9 |
+
8.wav,0.435,下一位演讲者是来自斯坦福大学计算机科学系的张明教授。,0,0.0,下一位演讲者是来自斯坦福大学计算机科学系的张明教授
|
| 10 |
+
9.wav,0.442,请各位将手机调至静音模式,演讲结束后有十五分钟提问时间。,0,0.0,请各位将手机调至静音模式演讲结束后有十五分钟提问时间
|
| 11 |
+
10.wav,0.339,茶歇将在十点三十分开始,地点在二楼休息区。,0,0.0,茶歇将在十点三十分开始地点在二楼休息区
|
| 12 |
11.wav,0.293,本合同自双方签字盖章之日起生效。,0,0.0,本合同自双方签字盖章之日起生效
|
| 13 |
+
12.wav,0.366,政府正在采取措施刺激经济增长和创造就业机会。,0,0.0,政府正在采取措施刺激经济增长和创造就业机会
|
| 14 |
+
13.wav,0.369,今天中午我们点外卖吧,我想吃宫保鸡丁和麻婆豆腐。,0,0.0,今天中午我们点外卖吧我想吃宫保鸡丁和麻婆豆腐
|
| 15 |
+
14.wav,0.588,医生建议我多吃粗粮,比如燕麦和紫薯,少吃高油、高糖的油炸食品,像炸鸡和甜甜圈。,0,0.0,医生建议我多吃粗粮比如燕麦和紫薯少吃高油高糖的油炸食品像炸鸡和甜甜圈
|
| 16 |
+
15.wav,0.453,本方案采用异构计算架构,结合gpu与fpga加速张量运算。,0,0.0,本方案采用异构计算架构结合gpu与fpga加速张量运算
|
| 17 |
+
16.wav,0.497,推理延迟稳定在五毫秒以内,吞吐量提升百分之四十,功耗降低一点八瓦。,0,0.0,推理延迟稳定在五毫秒以内吞吐量提升百分之四十功耗降低一点八瓦
|
| 18 |
+
17.wav,0.696,相比sota模型,我们的方法在小样本场景下召回率高出十二个百分点,且参数量仅为其三分之一。,0,0.0,相比sota模型我们的方法在小样本场景下召回率高出十二个百分点且参数量仅为其三分之一
|
| 19 |
+
18.wav,0.508,当节点并发数超过一万时,内存带宽会成瓶颈,导致伪延迟急剧上升。,1,0.036,当节点并发数超过一万时内存带宽会成瓶颈导致[-尾-]{+伪+}延迟急剧上升
|
| 20 |
+
19.wav,0.667,请看图三,蓝色柱是基线模型,红色线是我们的优化。结果交叉点表明,在第十五轮迭代后,优势显著。,0,0.0,请看图三蓝色柱是基线模型红色线是我们的优化结果交叉点表明在第十五轮迭代后优势显著
|
| 21 |
+
20.wav,0.499,您提到模型泛化性提升是否在跨模态数据上验证过量化指标是多少?,0,0.0,您提到模型泛化性提升是否在跨模态数据上验证过量化指标是多少
|
| 22 |
+
21.wav,0.578,容我追问一点,如果输入数据存在对抗样本,您方案的鲁棒性如何保证失效概率有测试吗?,0,0.0,容我追问一点如果输入数据存在对抗样本您方案的鲁棒性如何保证失效概率有测试吗
|
| 23 |
+
22.wav,0.495,抱歉打断您说的动态减脂,是指训练中还是推理中阈值是自适应的吗?,2,0.069,抱歉打断您说的动态[-剪枝-]{+减脂+}是指训练中还是推理中阈值是自适应的吗
|
| 24 |
+
23.wav,0.503,成本效益是否可行?部署这种定制芯片需要流片费用,中小客户怎么承担?,0,0.0,成本效益是否可行部署这种定制芯片需要流片费用中小客户怎么承担
|
| 25 |
+
24.wav,0.546,我补充一个角度,隐私计算领域也在用,类似思路是否可能跨领域合作。,0,0.0,我补充一个角度隐私计算领域也在用类似思路是否可能跨领域合作
|
| 26 |
+
25.wav,0.485,端到端,优化流水线,涵盖数据清洗特征、工程模型,压缩部署监控。,0,0.0,端到端优化流水线涵盖数据清洗特征工程模型压缩部署监控
|
| 27 |
+
26.wav,0.292,请检查代码库中的依赖项冲突问题。,0,0.0,请检查代码库中的依赖项冲突问题
|
| 28 |
+
27.wav,0.345,这个电路板集成了微控制器传感器和无线通信模块。,0,0.0,这个电路板集成了微控制器传感器和无线通信模块
|
| 29 |
+
28.wav,0.342,区块链技术的核心在于去中心化和加密安全性。,0,0.0,区块链技术的核心在于去中心化和加密安全性
|
| 30 |
+
29.wav,0.362,需符合等保三级要求,数据出境要走安全评估。,0,0.0,需符合等保三级要求数据出境要���安全评估
|
| 31 |
+
30.wav,0.313,最新数据显示,消费者信心指数有所回升。,0,0.0,最新数据显示消费者信心指数有所回升
|
| 32 |
31.wav,0.349,专家预测,新能源汽车市场将迎来爆发式增长。,0,0.0,专家预测新能源汽车市场将迎来爆发式增长
|
| 33 |
+
32.wav,0.482,多模态大模型能够同时处理文本图像和音频信号,实现真正的跨模态理解。,0,0.0,多模态大模型能够同时处理文本图像和音频信号实现真正的跨模态理解
|
| 34 |
+
33.wav,0.467,联邦学习可以在保护用户隐私的前提下,实现分布式模型的协同训练。,0,0.0,联邦学习可以在保护用户隐私的前提下实现分布式模型的协同训练
|
| 35 |
+
34.wav,0.455,我们研发的五十量子比特处理器在特定算法上展现出了量子优越性。,0,0.0,我们研发的五十量子比特处理器在特定算法上展现出了量子优越性
|
| 36 |
+
35.wav,0.449,变分量子本增值求解器在化学模拟中显示出巨大潜力。,1,0.043,变分量子��[-征-]{+增+}值求解器在化学模拟中显示出巨大潜力
|
| 37 |
+
36.wav,0.492,边缘ai推理的延迟已经可以控制在十毫秒以内,满足实时应用需求。,0,0.0,边缘ai推理的延迟已经可以控制在十毫秒以内满足实时应用需求
|
| 38 |
+
37.wav,0.55,我们设计的新型神经网络压缩算法,在保持精度的同时,将模型大小减少了百分之七十。,0,0.0,我们设计的新型神经网络压缩算法在保持精度的同时将模型大小减少了百分之七十
|
| 39 |
+
38.wav,0.511,损失函数结合了交叉熵损失和对比,损失,权重系数设置为零点三和零点七。,0,0.0,损失函数结合了交叉熵损失和对比损失权重系数设置为零点三和零点七
|
| 40 |
+
39.wav,0.648,在五个标准数据集上的实验结果表明,我们的方法平均比现有最佳方法提升了二点三个百分点。,0,0.0,在五个标准数据集上的实验结果表明我们的方法平均比现有最佳方法提升了二点三个百分点
|
| 41 |
+
40.wav,0.53,消融实验证实了每个模块的有效性,移除注意力机制会导致性能下降百分之四点六。,0,0.0,消融实验证实了每个模块的有效性移除注意力机制会导致性能下降百分之四点六
|
| 42 |
+
41.wav,0.496,模型的参数量为一点二亿,在八张a一百显卡上训练了七十二小时。,0,0.0,模型的参数量为一点二亿在八张a一百显卡上训练了七十二小时
|
| 43 |
+
42.wav,0.311,总之,搞定了数据倾斜性能就上去了。,0,0.0,总之搞定了数据倾斜性能就上去了
|
| 44 |
+
43.wav,0.994,open ai whisper需要fm pag的环境。fm pag是一个开源的跨平台音视频,处理工具和框架,可以用来录制转换和流式传输音视频内容。,5,0.074,openai[---]whisper需要f[-f-]mp[-e-]{+a+}g的环境f[-f-]mp[-e-]{+a+}g是一个开源的跨平台音视频处理工具和框架可以用来录制转换和流式传输音视频内容
|
| 45 |
+
44.wav,0.444,采用transformer序列到序列模型,可以实现针对不同的语言处理任务。,0,0.0,采用transformer序列到序列模型可以实现针对不同的语言处理任务
|
| 46 |
+
45.wav,0.535,transformer架构在自然语言处理中的成功应用,已经彻底改变了预训练模型的范式。,0,0.0,transformer架构在自然语言处理中的成功应用已经彻底改变了预训练模型的范式
|
| 47 |
+
46.wav,0.511,请大家注意,workshop材料已经上传至会议系统,代码仓库链接在附录页。,0,0.0,请大家注意workshop材料已经上传至会议系统代码仓库链接在附录页
|
| 48 |
+
47.wav,0.524,别造轮子了,直接调用乐uv五开源库的预训练权重,快速迭代才是王道。,4,0.125,别造轮子了直接调用[-yolo-]{+乐u+}v五开源库的预训练权重快速迭代才是王道
|
| 49 |
+
48.wav,0.43,请确保您的设备已连接到五g赫兹、wifi频段,以获得最佳性能。,3,0.103,请确保您的设备已连接到五g[-hz-]{+赫兹+}wi[---]fi频段以获得最佳性能
|
| 50 |
+
49.wav,0.593,我们提出了一种基于对比学习的自监督方法,在imaginate数据集上达到了百分之九十二点五的准确率。,3,0.064,我们提出了一种基于对比学习的自监督方法在imag{+inat+}e[-net-]数据集上达到了百分之九十二点五的准确率
|
| 51 |
+
50.wav,0.478,gbd four在代码生成和多步推理任务上展现出令人印象深刻的伦理。,8,0.267,g[-pt负四-]{+bdfour+}在代码生成和多步推理任务上展现出令人印象深刻的[-能力-]{+伦理+}
|
| 52 |
+
51.wav,0.783,若在高并发场景下未启用我们的动态缓存机制,即使用rdma网络延迟,也可能因cpu调度增强而恶化。,2,0.044,若在高并发场景下未启用我们的动态缓存机制即使用rdma网络延迟也可能因cpu调度[-争抢-]{+增强+}而恶化
|
| 53 |
+
52.wav,0.402,准确说峰值算力是两百tops,不是刚才说的一百五。,2,0.083,准确说峰值算力是[-二-]{+两+}百tops不是刚才说的一百五[-十-]
|
| 54 |
+
53.wav,0.393,秦始皇嬴政书同文,车同轨,奠定了中国大一统的基础。,0,0.0,秦始皇嬴政书同文车同轨奠定了中国大一统的基础
|
| 55 |
+
54.wav,0.438,诸葛亮在出师表中写道,鞠躬尽瘁死而后已成为后世臣子的楷模。,0,0.0,诸葛亮在出师表中写道鞠躬尽瘁死而后已成为后世臣子的楷模
|
| 56 |
+
55.wav,0.43,李白的举头望明月,低头思故乡,是连三岁孩童都能背诵的诗句。,0,0.0,李白的举头望明月低头思故乡是连三岁孩童都能背诵的诗句
|
| 57 |
+
56.wav,0.488,孔子曾说,己所不欲勿施于人,这简单的八个字,构成了儒家伦理的基石。,0,0.0,孔子曾说己所不欲勿施于人这简单的八个字构成了儒家伦理的基石
|
| 58 |
+
57.wav,0.464,王羲之被后人尊为书圣,其代表作兰亭集序被誉为天下第一行书。,0,0.0,王羲之被后人尊为书圣其代表作兰亭集序被誉为天下第一行书
|
| 59 |
+
58.wav,0.423,我们要学习庖丁解牛的精神,掌握事物的客观规律才能游刃有余。,0,0.0,我们要学习庖丁解牛的精神掌握事物的客观规律才能游刃有余
|
| 60 |
+
59.wav,0.428,项羽在鸿门宴上优柔寡��,放走了刘邦,最终兵败乌江自刎。,0,0.0,项羽在鸿门宴上优柔寡断放走了刘邦最终兵败乌江自刎
|
| 61 |
+
60.wav,0.471,在杭州,西湖畔,人们总会想起苏轼治理西湖,修筑苏堤的往事。,0,0.0,在杭州西湖畔人们总会想起苏轼治理西湖修筑苏堤的往事
|
| 62 |
+
61.wav,0.279,我计划去埃菲尔铁塔和卢浮宫参观。,0,0.0,我计划去埃菲尔铁塔和卢浮宫参观
|
| 63 |
+
62.wav,0.342,莎士比亚的戏剧深刻地探讨了人性的复杂性。,0,0.0,莎士比亚的戏剧深刻地探讨了人性的复杂性
|
| 64 |
+
63.wav,0.241,这个消息让他丈二和尚摸不着头脑。,0,0.0,这个消息让他丈二和尚摸不着头脑
|
| 65 |
+
64.wav,0.325,画龙点睛之笔,让整个设计焕然一新。,0,0.0,画龙点睛之笔让整个设计焕然一新
|
| 66 |
+
65.wav,0.264,这是卡脖子技术,必须自主研发。,0,0.0,这是卡脖子技术必须自主研发
|
| 67 |
+
66.wav,0.337,这幅画作以其独特的色彩运用和构图技巧而闻名。,0,0.0,这幅画作以其独特的色彩运用和构图技巧而闻名
|
| 68 |
+
67.wav,0.277,患者主诉间歇性,胸痛放射至左臂。,0,0.0,患者主诉间歇性胸痛放射至左臂
|
| 69 |
+
68.wav,0.626,患者有冠状动脉粥样硬化性心脏病病史,十年慢性阻塞性肺疾病病史,五年。,0,0.0,患者有冠状动脉粥样硬化性心脏病病史十年慢性阻塞性肺疾病病史五年
|
| 70 |
+
69.wav,0.38,建议行冠状动脉、造影检查,必要时植入支架。,0,0.0,建议行冠状动脉造影检查必要时植入支架
|
| 71 |
+
70.wav,0.44,患者需低盐、低脂糖尿病饮食监测、血压、血糖变化。,0,0.0,患者需低盐低脂糖尿病饮食监测血压血糖变化
|
| 72 |
+
71.wav,0.553,胸部ct平扫显示,双肺散在膜玻璃样密度影以胸膜下分布为主。,1,0.037,胸部ct平扫显示双肺散在[-磨-]{+膜+}玻璃样密度影以胸膜下分布为主
|
| 73 |
+
72.wav,0.662,知识产权归属约定,乙方在履行本合同过程中所产生的全部智力成果,其知识产权归甲方所有。,1,0.025,知识产权归属约定乙方在履行本合同过程中所产生的全部智力成果其知识产权[-均-]归甲方所有
|
| 74 |
+
73.wav,0.792,双方应履行本合同发生争议的应首先通过友好协商解决,协商不成的,任何一方均有权向有管辖权的人民法院提起诉讼。,1,0.02,双方[-因-]{+应+}履行本合同发生争议的应首先通过友好协商解决协商不成的任何一方均有权向有管辖权的人民法院提起诉讼
|
| 75 |
+
74.wav,0.583,被告在法定期限内未提交答辩状,亦未到庭参加诉讼,本院依法缺席审理。,0,0.0,被告在法定期限内未提交答辩状亦未到庭参加诉讼本院依法缺席审理
|
| 76 |
+
75.wav,0.882,原告向本院提出诉讼请求。一、判令被告支付货款人民币五十万八千元及逾期付款利息。二、判令被告承担本案的诉讼费用。,0,0.0,原告向本院提出诉讼请求一判令被告支付货款人民币五十万八千元及逾期付款利息二判令被告承担本案的诉讼费用
|
| 77 |
+
76.wav,0.71,被执行人未按执行通知履行法律文书确定的义务,人民法院有权查封、扣押、冻结、拍卖被执行人的财产。,0,0.0,被执行人未按执行通知履行法律文书确定的义务人民法院有权查封扣押冻结拍卖被执行人的财产
|
| 78 |
77.wav,0.179,这个视频太上头了。,0,0.0,这个视频太上头了
|
| 79 |
+
78.wav,0.182,他真是个社恐。,0,0.0,他真是个社恐
|
| 80 |
+
79.wav,0.267,简直了,这躺平的状态也太佛系了吧。,0,0.0,简直了这躺平的状态也太佛系了吧
|
| 81 |
+
80.wav,0.263,这个瓜有点大我得去吃瓜了。,0,0.0,这个瓜有点大我得去吃瓜了
|
| 82 |
+
81.wav,0.261,别内卷了,咱们还是多交流交流吧。,0,0.0,别内卷了咱们还是多交流交流吧
|
| 83 |
+
82.wav,0.633,第二个公司,我们成立了中国黄页。在中国黄页的创业经验中有很多的经验,也是可以在这跟大家进行分享的。,1,0.022,第二个公司我们成立了中国黄页在中国黄页的创业经验中有很多的经验也是可以在这[-儿-]跟大家进行分享的
|
| 84 |
+
83.wav,0.582,对于大部分在接触微积分之前,主要的学习经验就是刷题,甚至是连题也不刷的同学们来说。,0,0.0,对于大部分在接触微积分之前主要的学习经验就是刷题甚至是连题也不刷的同学们来说
|
| 85 |
+
84.wav,0.81,说了两个小时没人听懂,我在说什么,最后二十三个人反对一个人同意这一个人就说马云你这样做,你就试试看,不行的话,赶紧逃回来,还来得及。,0,0.0,说了两个小时没人听懂我在说什么最后二十三个人反对一个人同意这一个人就说马云你这样做你就试试看不行的话赶紧逃回来还来得及
|
| 86 |
+
85.wav,0.46,晚上想想是热血沸腾真好,第二天早上骑个自行车又上班去了,对吧?,0,0.0,晚上想想是热血沸腾真好第二天早上骑个自行车又上班去了对吧
|
scripts/download_hf.py
CHANGED
|
@@ -2,10 +2,10 @@ from pathlib import Path
|
|
| 2 |
from huggingface_hub import snapshot_download
|
| 3 |
|
| 4 |
# HF_ENDPOINT=https://hf-mirror.com python download_llm_copy.py
|
| 5 |
-
|
| 6 |
-
local_dir = "~/Downloads"
|
| 7 |
repos = {
|
| 8 |
-
"Qwen/
|
| 9 |
#"Qwen/Qwen3-235B-A22B-GGUF": ["Q8_0/Qwen3-235B-A22B-Q8_0-00002-of-00009.gguf","Q8_0/Qwen3-235B-A22B-Q8_0-00004-of-00009.gguf"]
|
| 10 |
}
|
| 11 |
|
|
|
|
| 2 |
from huggingface_hub import snapshot_download
|
| 3 |
|
| 4 |
# HF_ENDPOINT=https://hf-mirror.com python download_llm_copy.py
|
| 5 |
+
local_dir = "/Users/jeqin/work/code"
|
| 6 |
+
# local_dir = "~/Downloads"
|
| 7 |
repos = {
|
| 8 |
+
"Qwen/Qwen2.5-0.5B-Instruct": [],
|
| 9 |
#"Qwen/Qwen3-235B-A22B-GGUF": ["Q8_0/Qwen3-235B-A22B-Q8_0-00002-of-00009.gguf","Q8_0/Qwen3-235B-A22B-Q8_0-00004-of-00009.gguf"]
|
| 10 |
}
|
| 11 |
|
scripts/run_funasr_quant.py
CHANGED
|
@@ -26,26 +26,24 @@ def load_model(quantize=True):
|
|
| 26 |
return vad_model, asr_model, punc_model
|
| 27 |
|
| 28 |
def inference(vad_model, asr_model, punc_model, audio:Path):
|
| 29 |
-
print(audio.name)
|
| 30 |
t1 = time.time()
|
| 31 |
-
vad_res = vad_model(str(audio))
|
| 32 |
-
# t2 = time.time()
|
| 33 |
-
# print("vad time:", t2-t1)
|
| 34 |
asr_res = asr_model(str(audio), hotwords="")
|
| 35 |
-
|
| 36 |
-
|
| 37 |
-
|
| 38 |
-
|
| 39 |
-
|
| 40 |
-
text = result[0]
|
| 41 |
t4 = time.time()
|
| 42 |
-
# print("punc time:", t4-t3)
|
| 43 |
-
# print("punc text:", text)
|
| 44 |
-
# print(text)
|
| 45 |
t = t4-t1
|
| 46 |
-
# print("inference:", t)
|
| 47 |
return text, t
|
| 48 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 49 |
def run_recordings():
|
| 50 |
quantize = True
|
| 51 |
vad_model, asr_model, punc_model = load_model(quantize)
|
|
@@ -71,10 +69,10 @@ def run_test_audios():
|
|
| 71 |
save_csv(file_name, rows)
|
| 72 |
|
| 73 |
def run_test_dataset():
|
| 74 |
-
from
|
| 75 |
quantize = True
|
| 76 |
vad_model, asr_model, punc_model = load_model(quantize)
|
| 77 |
-
test_data = Path("../test_data/
|
| 78 |
audio_parent = Path("../test_data/")
|
| 79 |
rows = [["file_name", "time", "inference_result"]]
|
| 80 |
result_list = []
|
|
@@ -106,7 +104,7 @@ def run_test_dataset():
|
|
| 106 |
json.dump(result_list, f, ensure_ascii=False, indent=2)
|
| 107 |
|
| 108 |
def run_test_emilia():
|
| 109 |
-
from
|
| 110 |
quantize = True
|
| 111 |
vad_model, asr_model, punc_model = load_model(quantize)
|
| 112 |
parent = Path("../test_data/ZH-B000000")
|
|
@@ -135,5 +133,37 @@ def run_test_emilia():
|
|
| 135 |
with open("csv/funasr_emilia_results.json", "w", encoding="utf-8") as f:
|
| 136 |
json.dump(result_list, f, ensure_ascii=False, indent=2)
|
| 137 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 138 |
if __name__ == '__main__':
|
| 139 |
-
|
|
|
|
|
|
|
|
|
| 26 |
return vad_model, asr_model, punc_model
|
| 27 |
|
| 28 |
def inference(vad_model, asr_model, punc_model, audio:Path):
|
|
|
|
| 29 |
t1 = time.time()
|
| 30 |
+
# vad_res = vad_model(str(audio))
|
|
|
|
|
|
|
| 31 |
asr_res = asr_model(str(audio), hotwords="")
|
| 32 |
+
text = ""
|
| 33 |
+
if len(asr_res) > 0:
|
| 34 |
+
asr_text = asr_res[0]["preds"]
|
| 35 |
+
result = punc_model(asr_text)
|
| 36 |
+
text = result[0]
|
|
|
|
| 37 |
t4 = time.time()
|
|
|
|
|
|
|
|
|
|
| 38 |
t = t4-t1
|
|
|
|
| 39 |
return text, t
|
| 40 |
|
| 41 |
+
def run_once(audio):
|
| 42 |
+
quantize = True
|
| 43 |
+
vad_model, asr_model, punc_model = load_model(quantize)
|
| 44 |
+
text, t = inference(vad_model, asr_model, punc_model, audio)
|
| 45 |
+
print(text)
|
| 46 |
+
|
| 47 |
def run_recordings():
|
| 48 |
quantize = True
|
| 49 |
vad_model, asr_model, punc_model = load_model(quantize)
|
|
|
|
| 69 |
save_csv(file_name, rows)
|
| 70 |
|
| 71 |
def run_test_dataset():
|
| 72 |
+
from test_data.audios import read_dataset
|
| 73 |
quantize = True
|
| 74 |
vad_model, asr_model, punc_model = load_model(quantize)
|
| 75 |
+
test_data = Path("../test_data/dataset/dataset.txt")
|
| 76 |
audio_parent = Path("../test_data/")
|
| 77 |
rows = [["file_name", "time", "inference_result"]]
|
| 78 |
result_list = []
|
|
|
|
| 104 |
json.dump(result_list, f, ensure_ascii=False, indent=2)
|
| 105 |
|
| 106 |
def run_test_emilia():
|
| 107 |
+
from test_data.audios import read_emilia
|
| 108 |
quantize = True
|
| 109 |
vad_model, asr_model, punc_model = load_model(quantize)
|
| 110 |
parent = Path("../test_data/ZH-B000000")
|
|
|
|
| 133 |
with open("csv/funasr_emilia_results.json", "w", encoding="utf-8") as f:
|
| 134 |
json.dump(result_list, f, ensure_ascii=False, indent=2)
|
| 135 |
|
| 136 |
+
def run_test_wenet():
|
| 137 |
+
from test_data.audios import read_wenet
|
| 138 |
+
quantize = True
|
| 139 |
+
vad_model, asr_model, punc_model = load_model(quantize)
|
| 140 |
+
result_list = []
|
| 141 |
+
count = 0
|
| 142 |
+
try:
|
| 143 |
+
for audio_path, sentence in read_wenet(count_limit=5000):
|
| 144 |
+
count += 1
|
| 145 |
+
print(f"processing {count}: {audio_path.name}")
|
| 146 |
+
text, t = inference(vad_model, asr_model, punc_model, audio_path)
|
| 147 |
+
print("inference time:", t)
|
| 148 |
+
print(text)
|
| 149 |
+
result_list.append({
|
| 150 |
+
"index": count,
|
| 151 |
+
"audio_path": audio_path.name,
|
| 152 |
+
"reference": sentence,
|
| 153 |
+
# "duration": duration,
|
| 154 |
+
"inference_time": round(t, 3),
|
| 155 |
+
"inference_result": text
|
| 156 |
+
})
|
| 157 |
+
# except Exception as e:
|
| 158 |
+
# print(e)
|
| 159 |
+
except KeyboardInterrupt as e:
|
| 160 |
+
print(e)
|
| 161 |
+
import json
|
| 162 |
+
with open("csv/funasr_wenet_results.json", "w", encoding="utf-8") as f:
|
| 163 |
+
json.dump(result_list, f, ensure_ascii=False, indent=2)
|
| 164 |
+
|
| 165 |
+
|
| 166 |
if __name__ == '__main__':
|
| 167 |
+
# run_recordings()
|
| 168 |
+
run_test_wenet()
|
| 169 |
+
# run_once(Path("/Users/jeqin/work/code/TestTranslator/test_data/audio_clips/zhengyaowei-part1.mp3"))
|
scripts/run_whisper.py
CHANGED
|
@@ -36,8 +36,6 @@ def run_recordings():
|
|
| 36 |
rows = [["file_name", "time", "inference_result"]]
|
| 37 |
original = get_origin_text_dict()
|
| 38 |
for audio in sorted(audios.glob("*.wav"), key=lambda x: int(x.stem)):
|
| 39 |
-
if int(audio.stem)!=36:
|
| 40 |
-
continue
|
| 41 |
print(audio)
|
| 42 |
t1 = time.time()
|
| 43 |
output = model.transcribe(str(audio), language="zh", initial_prompt="以下是普通话句子,这是一段会议内容。")# initial_prompt="这是一段中文的会议内容。"
|
|
@@ -47,7 +45,7 @@ def run_recordings():
|
|
| 47 |
print(text)
|
| 48 |
d, nd, diff = get_text_distance(original[audio.stem], text)
|
| 49 |
rows.append([audio.name, round(t, 3), text, d, round(nd,3), diff])
|
| 50 |
-
|
| 51 |
|
| 52 |
|
| 53 |
def run_test_audios():
|
|
@@ -67,9 +65,9 @@ def run_test_audios():
|
|
| 67 |
save_csv("csv/whisper.csv", rows)
|
| 68 |
|
| 69 |
def run_test_dataset():
|
| 70 |
-
from
|
| 71 |
model = load_model()
|
| 72 |
-
test_data = Path("../test_data/
|
| 73 |
audio_parent = Path("../test_data/")
|
| 74 |
rows = [["file_name", "time", "inference_result"]]
|
| 75 |
result_list = []
|
|
@@ -102,7 +100,7 @@ def run_test_dataset():
|
|
| 102 |
json.dump(result_list, f, ensure_ascii=False, indent=2)
|
| 103 |
|
| 104 |
def run_test_emilia():
|
| 105 |
-
from
|
| 106 |
model = load_model()
|
| 107 |
parent = Path("../test_data/ZH-B000000")
|
| 108 |
result_list = []
|
|
@@ -133,5 +131,79 @@ def run_test_emilia():
|
|
| 133 |
import json
|
| 134 |
with open("csv/whisper_emilia_results.json", "w", encoding="utf-8") as f:
|
| 135 |
json.dump(result_list, f, ensure_ascii=False, indent=2)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 136 |
if __name__ == '__main__':
|
| 137 |
-
run_test_emilia()
|
|
|
|
|
|
|
|
|
| 36 |
rows = [["file_name", "time", "inference_result"]]
|
| 37 |
original = get_origin_text_dict()
|
| 38 |
for audio in sorted(audios.glob("*.wav"), key=lambda x: int(x.stem)):
|
|
|
|
|
|
|
| 39 |
print(audio)
|
| 40 |
t1 = time.time()
|
| 41 |
output = model.transcribe(str(audio), language="zh", initial_prompt="以下是普通话句子,这是一段会议内容。")# initial_prompt="这是一段中文的会议内容。"
|
|
|
|
| 45 |
print(text)
|
| 46 |
d, nd, diff = get_text_distance(original[audio.stem], text)
|
| 47 |
rows.append([audio.name, round(t, 3), text, d, round(nd,3), diff])
|
| 48 |
+
save_csv("csv/pywhisper.csv", rows)
|
| 49 |
|
| 50 |
|
| 51 |
def run_test_audios():
|
|
|
|
| 65 |
save_csv("csv/whisper.csv", rows)
|
| 66 |
|
| 67 |
def run_test_dataset():
|
| 68 |
+
from test_data.audios import read_dataset
|
| 69 |
model = load_model()
|
| 70 |
+
test_data = Path("../test_data/dataset/dataset.txt")
|
| 71 |
audio_parent = Path("../test_data/")
|
| 72 |
rows = [["file_name", "time", "inference_result"]]
|
| 73 |
result_list = []
|
|
|
|
| 100 |
json.dump(result_list, f, ensure_ascii=False, indent=2)
|
| 101 |
|
| 102 |
def run_test_emilia():
|
| 103 |
+
from test_data.audios import read_emilia
|
| 104 |
model = load_model()
|
| 105 |
parent = Path("../test_data/ZH-B000000")
|
| 106 |
result_list = []
|
|
|
|
| 131 |
import json
|
| 132 |
with open("csv/whisper_emilia_results.json", "w", encoding="utf-8") as f:
|
| 133 |
json.dump(result_list, f, ensure_ascii=False, indent=2)
|
| 134 |
+
|
| 135 |
+
def run_test_st():
|
| 136 |
+
from test_data.audios import read_st
|
| 137 |
+
model = load_model()
|
| 138 |
+
# parent = Path("../test_data/ST-CMDS-20170001_1-OS")
|
| 139 |
+
result_list = []
|
| 140 |
+
count = 0
|
| 141 |
+
try:
|
| 142 |
+
for audio_path, sentence in read_st(count_limit=5000):
|
| 143 |
+
count += 1
|
| 144 |
+
print(f"processing {count}: {audio_path}")
|
| 145 |
+
|
| 146 |
+
t1 = time.time()
|
| 147 |
+
output = model.transcribe(
|
| 148 |
+
str(audio_path), language="zh"
|
| 149 |
+
)
|
| 150 |
+
t = time.time() - t1
|
| 151 |
+
print("inference time:", t)
|
| 152 |
+
text = " ".join([a.text for a in output])
|
| 153 |
+
print(text)
|
| 154 |
+
result_list.append({
|
| 155 |
+
"index": count,
|
| 156 |
+
"audio_path": audio_path.name,
|
| 157 |
+
"reference": sentence,
|
| 158 |
+
# "duration": duration,
|
| 159 |
+
"inference_time": round(t, 3),
|
| 160 |
+
"inference_result": text
|
| 161 |
+
})
|
| 162 |
+
except Exception as e:
|
| 163 |
+
print(e)
|
| 164 |
+
except KeyboardInterrupt as e:
|
| 165 |
+
print(e)
|
| 166 |
+
import json
|
| 167 |
+
with open("csv/whisper_st_results.json", "w", encoding="utf-8") as f:
|
| 168 |
+
json.dump(result_list, f, ensure_ascii=False, indent=2)
|
| 169 |
+
|
| 170 |
+
|
| 171 |
+
def run_test_wenet():
|
| 172 |
+
from test_data.audios import read_wenet
|
| 173 |
+
model = load_model()
|
| 174 |
+
result_list = []
|
| 175 |
+
count = 0
|
| 176 |
+
try:
|
| 177 |
+
for audio_path, sentence in read_wenet(count_limit=5000):
|
| 178 |
+
count += 1
|
| 179 |
+
print(f"processing {count}: {audio_path}")
|
| 180 |
+
|
| 181 |
+
t1 = time.time()
|
| 182 |
+
output = model.transcribe(
|
| 183 |
+
str(audio_path), language="zh"
|
| 184 |
+
)
|
| 185 |
+
t = time.time() - t1
|
| 186 |
+
print("inference time:", t)
|
| 187 |
+
text = " ".join([a.text for a in output])
|
| 188 |
+
print(text)
|
| 189 |
+
result_list.append({
|
| 190 |
+
"index": count,
|
| 191 |
+
"audio_path": audio_path.name,
|
| 192 |
+
"reference": sentence,
|
| 193 |
+
# "duration": duration,
|
| 194 |
+
"inference_time": round(t, 3),
|
| 195 |
+
"inference_result": text
|
| 196 |
+
})
|
| 197 |
+
except Exception as e:
|
| 198 |
+
print(e)
|
| 199 |
+
except KeyboardInterrupt as e:
|
| 200 |
+
print(e)
|
| 201 |
+
import json
|
| 202 |
+
with open("csv/whisper_wenet_results.json", "w", encoding="utf-8") as f:
|
| 203 |
+
json.dump(result_list, f, ensure_ascii=False, indent=2)
|
| 204 |
+
|
| 205 |
+
|
| 206 |
if __name__ == '__main__':
|
| 207 |
+
# run_test_emilia()
|
| 208 |
+
# run_recordings()
|
| 209 |
+
run_test_wenet()
|
scripts/run_whisper_finetuned.py
CHANGED
|
@@ -4,7 +4,6 @@ import time
|
|
| 4 |
from pathlib import Path
|
| 5 |
import csv
|
| 6 |
|
| 7 |
-
import numpy as np
|
| 8 |
import torch
|
| 9 |
import librosa
|
| 10 |
from transformers import WhisperForConditionalGeneration, WhisperProcessor
|
|
@@ -114,7 +113,8 @@ def main():
|
|
| 114 |
print(f"{p.name} -> 失败: {e}")
|
| 115 |
|
| 116 |
def load_model():
|
| 117 |
-
model_path = "/Users/jeqin/Downloads/checkpoint-39000-full/whisper-large-v3-turbo-finetune"
|
|
|
|
| 118 |
lang = "zh"
|
| 119 |
t0 = time.time()
|
| 120 |
processor = WhisperProcessor.from_pretrained(
|
|
@@ -179,9 +179,9 @@ def run_recordings():
|
|
| 179 |
|
| 180 |
|
| 181 |
def run_test_dataset():
|
| 182 |
-
from
|
| 183 |
model, processor = load_model()
|
| 184 |
-
test_data = Path("../test_data/
|
| 185 |
audio_parent = Path("../test_data/")
|
| 186 |
rows = [["file_name", "time", "inference_result"]]
|
| 187 |
result_list = []
|
|
@@ -214,6 +214,111 @@ def run_test_dataset():
|
|
| 214 |
with open("csv/whisper_finetuned_dataset_results.json", "w", encoding="utf-8") as f:
|
| 215 |
json.dump(result_list, f, ensure_ascii=False, indent=2)
|
| 216 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 217 |
if __name__ == "__main__":
|
| 218 |
# main()
|
| 219 |
-
|
|
|
|
|
|
|
|
|
|
|
|
| 4 |
from pathlib import Path
|
| 5 |
import csv
|
| 6 |
|
|
|
|
| 7 |
import torch
|
| 8 |
import librosa
|
| 9 |
from transformers import WhisperForConditionalGeneration, WhisperProcessor
|
|
|
|
| 113 |
print(f"{p.name} -> 失败: {e}")
|
| 114 |
|
| 115 |
def load_model():
|
| 116 |
+
# model_path = "/Users/jeqin/Downloads/checkpoint-39000-full/whisper-large-v3-turbo-finetune"
|
| 117 |
+
model_path = "/Users/jeqin/Downloads/whisper-large-v3-turbo-finetune_1219"
|
| 118 |
lang = "zh"
|
| 119 |
t0 = time.time()
|
| 120 |
processor = WhisperProcessor.from_pretrained(
|
|
|
|
| 179 |
|
| 180 |
|
| 181 |
def run_test_dataset():
|
| 182 |
+
from test_data.audios import read_dataset
|
| 183 |
model, processor = load_model()
|
| 184 |
+
test_data = Path("../test_data/dataset/dataset.txt")
|
| 185 |
audio_parent = Path("../test_data/")
|
| 186 |
rows = [["file_name", "time", "inference_result"]]
|
| 187 |
result_list = []
|
|
|
|
| 214 |
with open("csv/whisper_finetuned_dataset_results.json", "w", encoding="utf-8") as f:
|
| 215 |
json.dump(result_list, f, ensure_ascii=False, indent=2)
|
| 216 |
|
| 217 |
+
def run_test_emilia():
|
| 218 |
+
from test_data.audios import read_emilia
|
| 219 |
+
model, processor = load_model()
|
| 220 |
+
parent = Path("../test_data/ZH-B000008")
|
| 221 |
+
result_list = []
|
| 222 |
+
count = 0
|
| 223 |
+
try:
|
| 224 |
+
for audio_path, sentence, duration in read_emilia(parent, count_limit=5000):
|
| 225 |
+
count += 1
|
| 226 |
+
print(f"processing {count}: {audio_path}")
|
| 227 |
+
|
| 228 |
+
t1 = time.time()
|
| 229 |
+
text = transcribe_file(
|
| 230 |
+
str(audio_path), model, processor
|
| 231 |
+
)
|
| 232 |
+
t = time.time() - t1
|
| 233 |
+
print("inference time:", t)
|
| 234 |
+
print(text)
|
| 235 |
+
result_list.append({
|
| 236 |
+
"index": count,
|
| 237 |
+
"audio_path": audio_path.name,
|
| 238 |
+
"reference": sentence,
|
| 239 |
+
"duration": duration,
|
| 240 |
+
"inference_time": round(t, 3),
|
| 241 |
+
"inference_result": text
|
| 242 |
+
})
|
| 243 |
+
except Exception as e:
|
| 244 |
+
print(e)
|
| 245 |
+
except KeyboardInterrupt as e:
|
| 246 |
+
print(e)
|
| 247 |
+
import json
|
| 248 |
+
with open("csv/whisper_finetune_emilia_results.json", "w", encoding="utf-8") as f:
|
| 249 |
+
json.dump(result_list, f, ensure_ascii=False, indent=2)
|
| 250 |
+
|
| 251 |
+
|
| 252 |
+
def run_test_st():
|
| 253 |
+
from test_data.audios import read_st
|
| 254 |
+
model, processor = load_model()
|
| 255 |
+
# parent = Path("../test_data/ST-CMDS-20170001_1-OS")
|
| 256 |
+
result_list = []
|
| 257 |
+
count = 0
|
| 258 |
+
try:
|
| 259 |
+
for audio_path, sentence in read_st(count_limit=5000):
|
| 260 |
+
count += 1
|
| 261 |
+
print(f"processing {count}: {audio_path}")
|
| 262 |
+
|
| 263 |
+
t1 = time.time()
|
| 264 |
+
text = transcribe_file(
|
| 265 |
+
str(audio_path), model, processor
|
| 266 |
+
)
|
| 267 |
+
t = time.time() - t1
|
| 268 |
+
print("inference time:", t)
|
| 269 |
+
print(text)
|
| 270 |
+
result_list.append({
|
| 271 |
+
"index": count,
|
| 272 |
+
"audio_path": audio_path.name,
|
| 273 |
+
"reference": sentence,
|
| 274 |
+
# "duration": duration,
|
| 275 |
+
"inference_time": round(t, 3),
|
| 276 |
+
"inference_result": text
|
| 277 |
+
})
|
| 278 |
+
except Exception as e:
|
| 279 |
+
print(e)
|
| 280 |
+
except KeyboardInterrupt as e:
|
| 281 |
+
print(e)
|
| 282 |
+
import json
|
| 283 |
+
with open("csv/whisper_finetune_st_results.json", "w", encoding="utf-8") as f:
|
| 284 |
+
json.dump(result_list, f, ensure_ascii=False, indent=2)
|
| 285 |
+
|
| 286 |
+
def run_test_wenet():
|
| 287 |
+
from test_data.audios import read_wenet
|
| 288 |
+
model, processor = load_model()
|
| 289 |
+
result_list = []
|
| 290 |
+
count = 0
|
| 291 |
+
try:
|
| 292 |
+
for audio_path, sentence in read_wenet(count_limit=5000):
|
| 293 |
+
count += 1
|
| 294 |
+
print(f"processing {count}: {audio_path}")
|
| 295 |
+
|
| 296 |
+
t1 = time.time()
|
| 297 |
+
text = transcribe_file(
|
| 298 |
+
str(audio_path), model, processor
|
| 299 |
+
)
|
| 300 |
+
t = time.time() - t1
|
| 301 |
+
print("inference time:", t)
|
| 302 |
+
print(text)
|
| 303 |
+
result_list.append({
|
| 304 |
+
"index": count,
|
| 305 |
+
"audio_path": audio_path.name,
|
| 306 |
+
"reference": sentence,
|
| 307 |
+
# "duration": duration,
|
| 308 |
+
"inference_time": round(t, 3),
|
| 309 |
+
"inference_result": text
|
| 310 |
+
})
|
| 311 |
+
except Exception as e:
|
| 312 |
+
print(e)
|
| 313 |
+
except KeyboardInterrupt as e:
|
| 314 |
+
print(e)
|
| 315 |
+
import json
|
| 316 |
+
with open("csv/whisper_finetune_wenet_results.json", "w", encoding="utf-8") as f:
|
| 317 |
+
json.dump(result_list, f, ensure_ascii=False, indent=2)
|
| 318 |
+
|
| 319 |
if __name__ == "__main__":
|
| 320 |
# main()
|
| 321 |
+
# run_recordings()
|
| 322 |
+
# run_test_dataset()
|
| 323 |
+
# run_test_emilia()
|
| 324 |
+
run_test_wenet()
|
scripts/run_whisper_finetuned_with_punc_ov.py
CHANGED
|
@@ -95,7 +95,7 @@ def run_recordings():
|
|
| 95 |
save_csv("csv/finetune_whisper_with_punc.csv", rows)
|
| 96 |
|
| 97 |
def run_test_dataset():
|
| 98 |
-
from
|
| 99 |
device = "GPU"
|
| 100 |
lang = "<|zh|>"
|
| 101 |
asr, punc = load_model(device)
|
|
@@ -131,7 +131,7 @@ def run_test_dataset():
|
|
| 131 |
|
| 132 |
|
| 133 |
def run_test_emilia():
|
| 134 |
-
from
|
| 135 |
device = "GPU"
|
| 136 |
lang = "<|zh|>"
|
| 137 |
asr, punc = load_model(device)
|
|
|
|
| 95 |
save_csv("csv/finetune_whisper_with_punc.csv", rows)
|
| 96 |
|
| 97 |
def run_test_dataset():
|
| 98 |
+
from test_data.audios import read_dataset
|
| 99 |
device = "GPU"
|
| 100 |
lang = "<|zh|>"
|
| 101 |
asr, punc = load_model(device)
|
|
|
|
| 131 |
|
| 132 |
|
| 133 |
def run_test_emilia():
|
| 134 |
+
from test_data.audios import read_emilia
|
| 135 |
device = "GPU"
|
| 136 |
lang = "<|zh|>"
|
| 137 |
asr, punc = load_model(device)
|
temp.py
CHANGED
|
@@ -1,47 +1,33 @@
|
|
| 1 |
-
import
|
| 2 |
-
|
| 3 |
-
|
| 4 |
-
|
| 5 |
-
|
| 6 |
-
|
| 7 |
-
|
| 8 |
-
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
|
| 14 |
-
}
|
| 15 |
-
|
| 16 |
-
|
| 17 |
-
|
| 18 |
-
|
| 19 |
-
|
| 20 |
-
|
| 21 |
-
|
| 22 |
-
|
| 23 |
-
|
| 24 |
-
|
| 25 |
-
|
| 26 |
-
|
| 27 |
-
|
| 28 |
-
|
| 29 |
-
|
| 30 |
-
|
| 31 |
-
|
| 32 |
-
|
| 33 |
-
|
| 34 |
-
break
|
| 35 |
-
except Exception as e:
|
| 36 |
-
print(e)
|
| 37 |
-
print(f"download failed, retry: {retry + 1}")
|
| 38 |
-
|
| 39 |
-
|
| 40 |
-
def main():
|
| 41 |
-
for repo, files in repos.items():
|
| 42 |
-
download(repo, files)
|
| 43 |
-
|
| 44 |
-
|
| 45 |
-
if __name__ == '__main__':
|
| 46 |
-
main()
|
| 47 |
-
|
|
|
|
| 1 |
+
from transformers import AutoModelForCausalLM, AutoTokenizer
|
| 2 |
+
|
| 3 |
+
model_name = "Qwen/Qwen2.5-0.5B-Instruct"
|
| 4 |
+
|
| 5 |
+
model = AutoModelForCausalLM.from_pretrained(
|
| 6 |
+
model_name,
|
| 7 |
+
torch_dtype="auto",
|
| 8 |
+
device_map="auto"
|
| 9 |
+
)
|
| 10 |
+
tokenizer = AutoTokenizer.from_pretrained(model_name)
|
| 11 |
+
print("load model finished")
|
| 12 |
+
prompt = "Give me a short introduction to large language model."
|
| 13 |
+
messages = [
|
| 14 |
+
{"role": "system", "content": "You are Qwen, created by Alibaba Cloud. You are a helpful assistant."},
|
| 15 |
+
{"role": "user", "content": prompt}
|
| 16 |
+
]
|
| 17 |
+
text = tokenizer.apply_chat_template(
|
| 18 |
+
messages,
|
| 19 |
+
tokenize=False,
|
| 20 |
+
add_generation_prompt=True
|
| 21 |
+
)
|
| 22 |
+
print("after apply chat template:",text)
|
| 23 |
+
model_inputs = tokenizer([text], return_tensors="pt").to(model.device)
|
| 24 |
+
|
| 25 |
+
generated_ids = model.generate(
|
| 26 |
+
**model_inputs,
|
| 27 |
+
max_new_tokens=512
|
| 28 |
+
)
|
| 29 |
+
generated_ids = [
|
| 30 |
+
output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
|
| 31 |
+
]
|
| 32 |
+
|
| 33 |
+
response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
test_data/audios.py
CHANGED
|
@@ -1,6 +1,8 @@
|
|
| 1 |
from pathlib import Path
|
| 2 |
import json
|
| 3 |
|
|
|
|
|
|
|
| 4 |
from lib.utils import cmd
|
| 5 |
from environment import TEST_DATA
|
| 6 |
|
|
@@ -8,7 +10,7 @@ from environment import TEST_DATA
|
|
| 8 |
def read_recording(folder: Path=Path("./recordings"), count_limit=None):
|
| 9 |
pass
|
| 10 |
|
| 11 |
-
def read_dataset(file: Path=Path("
|
| 12 |
"""line sample: {"audio": {"path": "dataset/audio/data_aishell/wav/test/S0916/BAC009S0916W0158.wav"}, "sentence": "顾客体验的核心是真善美", "duration": 3.22, "sentences": [{"start": 0, "end": 3.22, "text": "顾客体验的核心是真善美"}]}"""
|
| 13 |
with open(file) as f:
|
| 14 |
lines =f.readlines()
|
|
@@ -44,6 +46,51 @@ def read_emilia(folder: Path=TEST_DATA/"ZH-B000000", count_limit=None):
|
|
| 44 |
cmd(command)
|
| 45 |
yield wav_path, text, duration
|
| 46 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 47 |
if __name__ == '__main__':
|
| 48 |
-
|
| 49 |
-
print(res)
|
|
|
|
| 1 |
from pathlib import Path
|
| 2 |
import json
|
| 3 |
|
| 4 |
+
from transformers.models.mamba2.modeling_mamba2 import segment_sum
|
| 5 |
+
|
| 6 |
from lib.utils import cmd
|
| 7 |
from environment import TEST_DATA
|
| 8 |
|
|
|
|
| 10 |
def read_recording(folder: Path=Path("./recordings"), count_limit=None):
|
| 11 |
pass
|
| 12 |
|
| 13 |
+
def read_dataset(file: Path=Path("dataset/dataset.txt"), count_limit=None):
|
| 14 |
"""line sample: {"audio": {"path": "dataset/audio/data_aishell/wav/test/S0916/BAC009S0916W0158.wav"}, "sentence": "顾客体验的核心是真善美", "duration": 3.22, "sentences": [{"start": 0, "end": 3.22, "text": "顾客体验的核心是真善美"}]}"""
|
| 15 |
with open(file) as f:
|
| 16 |
lines =f.readlines()
|
|
|
|
| 46 |
cmd(command)
|
| 47 |
yield wav_path, text, duration
|
| 48 |
|
| 49 |
+
def read_st(folder: Path=TEST_DATA/"ST-CMDS-20170001_1-OS", count_limit=None):
|
| 50 |
+
"""读取 st 数据集,返回音频路径、文本、时长,
|
| 51 |
+
"""
|
| 52 |
+
count = 0
|
| 53 |
+
for wav in sorted(folder.glob("*.wav")):
|
| 54 |
+
count += 1
|
| 55 |
+
if count_limit and count > count_limit:
|
| 56 |
+
break
|
| 57 |
+
txt = wav.with_suffix(".txt")
|
| 58 |
+
with open(txt, encoding="utf-8") as f:
|
| 59 |
+
text = f.read()
|
| 60 |
+
|
| 61 |
+
yield wav, text
|
| 62 |
+
|
| 63 |
+
def read_wenet(folder: Path=TEST_DATA/"wenet", json_file="WenetSpeech_TEST_NET.json", count_limit=None):
|
| 64 |
+
"""读取 wenet 数据集,返回音频路径、文本、时长,
|
| 65 |
+
"""
|
| 66 |
+
count = 0
|
| 67 |
+
with open(folder/json_file, encoding="utf-8") as f:
|
| 68 |
+
data = json.load(f)
|
| 69 |
+
audios = data["audios"]
|
| 70 |
+
for a in audios:
|
| 71 |
+
audio_file = Path(folder/a['path'])
|
| 72 |
+
if len(a["segments"])>=100: # 限制音频数量, 2985
|
| 73 |
+
continue
|
| 74 |
+
for seg in a["segments"]:
|
| 75 |
+
if count > count_limit:
|
| 76 |
+
break
|
| 77 |
+
seg_file = audio_file.parent / (seg["sid"]+".wav")
|
| 78 |
+
if not seg_file.exists():
|
| 79 |
+
command = f"ffmpeg -i {audio_file} -ar 16000 -ac 1 -ss {seg['begin_time']} -to {seg['end_time']} {seg_file}"
|
| 80 |
+
cmd(command)
|
| 81 |
+
count +=1
|
| 82 |
+
yield seg_file, seg["text"]
|
| 83 |
+
|
| 84 |
+
|
| 85 |
+
# for wav in sorted(folder.glob("*.wav")):
|
| 86 |
+
# count += 1
|
| 87 |
+
# if count_limit and count > count_limit:
|
| 88 |
+
# break
|
| 89 |
+
# txt = wav.with_suffix(".txt")
|
| 90 |
+
# with open(txt, encoding="utf-8") as f:
|
| 91 |
+
# text = f.read()
|
| 92 |
+
|
| 93 |
+
# yield wav, text
|
| 94 |
+
|
| 95 |
if __name__ == '__main__':
|
| 96 |
+
read_wenet()
|
|
|
test_data/{dataset_aishell → dataset}/dataset.txt
RENAMED
|
File without changes
|
test_data/recordings/text/test_asr_zh_with_index.txt
CHANGED
|
@@ -69,7 +69,7 @@
|
|
| 69 |
69. 建议行冠状动脉造影检查,必要时植入支架
|
| 70 |
70. 患者需低盐低脂糖尿病饮食,监测血压、血糖变化
|
| 71 |
71. 胸部CT平扫显示:双肺散在磨玻璃样密度影,以胸膜下分布为主
|
| 72 |
-
72.
|
| 73 |
73. 双方因履行本合同发生争议的,应首先通过友好协商解决;协商不成的,任何一方均有权向有管辖权的人民法院提起诉讼
|
| 74 |
74. 被告在法定期限内未提交答辩状,亦未到庭参加诉讼,本院依法缺席审理
|
| 75 |
75. 原告向本院提出诉讼请求:一、判令被告支付货款人民币五十万八千元及逾期付款利息;二、判令被告承担本案的诉讼费用
|
|
|
|
| 69 |
69. 建议行冠状动脉造影检查,必要时植入支架
|
| 70 |
70. 患者需低盐低脂糖尿病饮食,监测血压、血糖变化
|
| 71 |
71. 胸部CT平扫显示:双肺散在磨玻璃样密度影,以胸膜下分布为主
|
| 72 |
+
72. 知识产权归属约定:乙方在履行本合同过程中所产生的全部智力成果,其知识产权归甲方所有
|
| 73 |
73. 双方因履行本合同发生争议的,应首先通过友好协商解决;协商不成的,任何一方均有权向有管辖权的人民法院提起诉讼
|
| 74 |
74. 被告在法定期限内未提交答辩状,亦未到庭参加诉讼,本院依法缺席审理
|
| 75 |
75. 原告向本院提出诉讼请求:一、判令被告支付货款人民币五十万八千元及逾期付款利息;二、判令被告承担本案的诉讼费用
|
tests/{test_models → test_app_models}/__init__.py
RENAMED
|
File without changes
|
tests/{test_models → test_app_models}/conftest.py
RENAMED
|
File without changes
|
tests/{test_models → test_app_models}/test_funasr.py
RENAMED
|
@@ -16,9 +16,11 @@ def asr(get_platform):
|
|
| 16 |
def test_inference(asr):
|
| 17 |
#TODO: 测试CER
|
| 18 |
report = []
|
| 19 |
-
for audio_file, text, duration in read_emilia(count_limit=
|
| 20 |
print(audio_file)
|
| 21 |
audio = read_audio(audio_file)
|
| 22 |
asr_text, time_cost = asr.transcribe(audio)
|
| 23 |
report.append([audio_file,duration, text, asr_text, time_cost])
|
| 24 |
-
save_csv(REPORTS_DIR/"funasr.csv", ["audio", "duration", "ref", "asr", "time"], report)
|
|
|
|
|
|
|
|
|
| 16 |
def test_inference(asr):
|
| 17 |
#TODO: 测试CER
|
| 18 |
report = []
|
| 19 |
+
for audio_file, text, duration in read_emilia(count_limit=20):
|
| 20 |
print(audio_file)
|
| 21 |
audio = read_audio(audio_file)
|
| 22 |
asr_text, time_cost = asr.transcribe(audio)
|
| 23 |
report.append([audio_file,duration, text, asr_text, time_cost])
|
| 24 |
+
save_csv(REPORTS_DIR/"funasr.csv", ["audio", "duration", "ref", "asr", "time"], report)
|
| 25 |
+
speed=[i[4] for i in report]
|
| 26 |
+
print("Funasr average speed: ", sum(speed)/len(speed))
|
tests/{test_models → test_app_models}/test_llm.py
RENAMED
|
@@ -14,18 +14,18 @@ def llm(get_platform):
|
|
| 14 |
|
| 15 |
def test_llm_zh(llm):
|
| 16 |
report = []
|
| 17 |
-
for src in read_translation("zh"):
|
| 18 |
dst, time_cost = llm.translate(src, src_lang="zh", dst_lang="en")
|
| 19 |
-
print("Prompt:", src)
|
| 20 |
-
print("Response:", dst)
|
| 21 |
report.append([src, dst, time_cost])
|
| 22 |
save_csv(REPORTS_DIR/"translation_zh.csv", ["src", "dst", "time"], report)
|
|
|
|
|
|
|
| 23 |
|
| 24 |
def test_llm_en(llm):
|
| 25 |
report = []
|
| 26 |
-
for src in read_translation("en"):
|
| 27 |
dst, time_cost = llm.translate(src, src_lang="en", dst_lang="zh")
|
| 28 |
-
print("Prompt:", src)
|
| 29 |
-
print("Response:", dst)
|
| 30 |
report.append([src, dst, time_cost])
|
| 31 |
-
save_csv(REPORTS_DIR/"translation_en.csv", ["src", "dst", "time"], report)
|
|
|
|
|
|
|
|
|
| 14 |
|
| 15 |
def test_llm_zh(llm):
|
| 16 |
report = []
|
| 17 |
+
for src in read_translation("zh", count_limit=None):
|
| 18 |
dst, time_cost = llm.translate(src, src_lang="zh", dst_lang="en")
|
|
|
|
|
|
|
| 19 |
report.append([src, dst, time_cost])
|
| 20 |
save_csv(REPORTS_DIR/"translation_zh.csv", ["src", "dst", "time"], report)
|
| 21 |
+
speed = [i[2] for i in report]
|
| 22 |
+
print("llm zh average speed: ", sum(speed) / len(speed))
|
| 23 |
|
| 24 |
def test_llm_en(llm):
|
| 25 |
report = []
|
| 26 |
+
for src in read_translation("en", count_limit=None):
|
| 27 |
dst, time_cost = llm.translate(src, src_lang="en", dst_lang="zh")
|
|
|
|
|
|
|
| 28 |
report.append([src, dst, time_cost])
|
| 29 |
+
save_csv(REPORTS_DIR/"translation_en.csv", ["src", "dst", "time"], report)
|
| 30 |
+
speed = [i[2] for i in report]
|
| 31 |
+
print("llm en average speed: ", sum(speed) / len(speed))
|
tests/{test_models → test_app_models}/test_tts.py
RENAMED
|
@@ -17,16 +17,20 @@ def tts(get_platform):
|
|
| 17 |
def test_tts_zh(tts):
|
| 18 |
tts = tts.from_language("zh")
|
| 19 |
report = []
|
| 20 |
-
for text in read_translation("zh"):
|
| 21 |
samples, sr, time_cost = tts.generate(text)
|
| 22 |
report.append([text, time_cost])
|
| 23 |
save_csv(REPORTS_DIR / "tts_zh.csv", ["text", "time"], report)
|
|
|
|
|
|
|
| 24 |
|
| 25 |
|
| 26 |
def test_tts_en(tts):
|
| 27 |
tts = tts.from_language("en")
|
| 28 |
report = []
|
| 29 |
-
for text in read_translation("en"):
|
| 30 |
samples, sr, time_cost = tts.generate(text, speed=1.4)
|
| 31 |
report.append([text, time_cost])
|
| 32 |
-
save_csv(REPORTS_DIR / "tts_en.csv", ["text", "time"], report)
|
|
|
|
|
|
|
|
|
| 17 |
def test_tts_zh(tts):
|
| 18 |
tts = tts.from_language("zh")
|
| 19 |
report = []
|
| 20 |
+
for text in read_translation("zh", count_limit=20):
|
| 21 |
samples, sr, time_cost = tts.generate(text)
|
| 22 |
report.append([text, time_cost])
|
| 23 |
save_csv(REPORTS_DIR / "tts_zh.csv", ["text", "time"], report)
|
| 24 |
+
speed = [i[1] for i in report]
|
| 25 |
+
print("tts zh average speed: ", sum(speed) / len(speed))
|
| 26 |
|
| 27 |
|
| 28 |
def test_tts_en(tts):
|
| 29 |
tts = tts.from_language("en")
|
| 30 |
report = []
|
| 31 |
+
for text in read_translation("en",count_limit=20):
|
| 32 |
samples, sr, time_cost = tts.generate(text, speed=1.4)
|
| 33 |
report.append([text, time_cost])
|
| 34 |
+
save_csv(REPORTS_DIR / "tts_en.csv", ["text", "time"], report)
|
| 35 |
+
speed = [i[1] for i in report]
|
| 36 |
+
print("tts en average speed: ", sum(speed) / len(speed))
|
tests/{test_models → test_app_models}/test_whisper.py
RENAMED
|
@@ -15,9 +15,11 @@ def whisper(get_platform):
|
|
| 15 |
def test_inference(whisper):
|
| 16 |
#TODO: 测试CER
|
| 17 |
report = []
|
| 18 |
-
for audio_file, text, duration in read_emilia(count_limit=
|
| 19 |
print(audio_file)
|
| 20 |
audio = read_audio(audio_file)
|
| 21 |
asr_text, time_cost = whisper.transcribe(audio, "zh")
|
| 22 |
report.append([audio_file,duration, text, asr_text, time_cost])
|
| 23 |
-
save_csv(REPORTS_DIR/"whisper.csv", ["audio", "duration", "ref", "asr", "time"], report)
|
|
|
|
|
|
|
|
|
| 15 |
def test_inference(whisper):
|
| 16 |
#TODO: 测试CER
|
| 17 |
report = []
|
| 18 |
+
for audio_file, text, duration in read_emilia(count_limit=20):
|
| 19 |
print(audio_file)
|
| 20 |
audio = read_audio(audio_file)
|
| 21 |
asr_text, time_cost = whisper.transcribe(audio, "zh")
|
| 22 |
report.append([audio_file,duration, text, asr_text, time_cost])
|
| 23 |
+
save_csv(REPORTS_DIR/"whisper.csv", ["audio", "duration", "ref", "asr", "time"], report)
|
| 24 |
+
speed = [i[4] for i in report]
|
| 25 |
+
print("Whisper average speed: ", sum(speed) / len(speed))
|