mirror of
https://github.com/modelscope/FunASR
synced 2025-09-15 14:48:36 +08:00
update
This commit is contained in:
parent
6a69cae224
commit
e49e54596c
@ -10,22 +10,9 @@ import numpy as np
|
||||
import torch
|
||||
import torchaudio
|
||||
|
||||
# from modelscope import HubApi
|
||||
#
|
||||
# api = HubApi()
|
||||
#
|
||||
# api.login('')
|
||||
|
||||
from funasr import AutoModel
|
||||
|
||||
# model = "/Users/zhifu/Downloads/modelscope_models/SenseVoiceCTC"
|
||||
# model = "iic/SenseVoiceCTC"
|
||||
# model = AutoModel(model=model,
|
||||
# vad_model="iic/speech_fsmn_vad_zh-cn-16k-common-pytorch",
|
||||
# vad_kwargs={"max_single_segment_time": 30000},
|
||||
# trust_remote_code=True,
|
||||
# )
|
||||
|
||||
import re
|
||||
import os
|
||||
import sys
|
||||
@ -40,13 +27,15 @@ if len(sys.argv) > 1:
|
||||
if len(sys.argv) > 6:
|
||||
new_sys = True
|
||||
else:
|
||||
ckpt_dir = "/nfs/beinian.lzr/workspace/GPT-4o/Exp/exp7/5m-8gpu/exp5-1-0619"
|
||||
ckpt_id = "model.pt.ep6"
|
||||
ckpt_dir = "/data/zhifu.gzf/init_model/gpt4o-exp7-4"
|
||||
ckpt_id = "model.pt.ep1.140000"
|
||||
jsonl = (
|
||||
"/nfs/beinian.lzr/workspace/GPT-4o/Data/Speech2Text/TestData/s2tchat.v20240619.test.jsonl"
|
||||
)
|
||||
dataset = jsonl.split("/")[-1]
|
||||
output_dir = os.path.join(ckpt_dir, f"inference-{ckpt_id}", dataset)
|
||||
device = "cuda:6"
|
||||
new_sys = True
|
||||
|
||||
|
||||
model = AutoModel(
|
||||
@ -59,9 +48,22 @@ model = AutoModel(
|
||||
llm_dtype="bf16",
|
||||
)
|
||||
|
||||
# model_asr = AutoModel(
|
||||
# model="/data/zhifu.gzf/init_model/SenseVoice",
|
||||
# output_dir=output_dir,
|
||||
# device=device,
|
||||
# fp16=False,
|
||||
# bf16=False,
|
||||
# llm_dtype="bf16",
|
||||
# )
|
||||
|
||||
def model_inference(input_wav, text_inputs, fs=16000):
|
||||
|
||||
def model_inference(input_wav, text_inputs, state, fs=16000):
|
||||
# print(f"text_inputs: {text_inputs}")
|
||||
# print(f"input_wav: {input_wav}")
|
||||
|
||||
if state is None:
|
||||
state = {}
|
||||
if isinstance(input_wav, tuple):
|
||||
fs, input_wav = input_wav
|
||||
input_wav = input_wav.astype(np.float32) / np.iinfo(np.int16).max
|
||||
@ -73,48 +75,97 @@ def model_inference(input_wav, text_inputs, fs=16000):
|
||||
input_wav_t = torch.from_numpy(input_wav).to(torch.float32)
|
||||
input_wav = resampler(input_wav_t[None, :])[0, :].numpy().astype("float32")
|
||||
|
||||
input_wav_byte = input_wav.tobytes()
|
||||
# input_wav_byte = input_wav.tobytes()
|
||||
# asr_out = model_asr.generate(input_wav)[0]["text"]
|
||||
# print(f"asr_out: {asr_out}")
|
||||
user_prompt = f"<|startofspeech|>!!<|endofspeech|>"
|
||||
else:
|
||||
pass
|
||||
# input_wav = "https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/tmp/1.wav"
|
||||
# user_prompt = f"<|startofspeech|>!{input_wav}<|endofspeech|>"
|
||||
|
||||
contents_i = []
|
||||
system_prompt = text_inputs
|
||||
user_prompt = f"<|startofspeech|>!!{input_wav_byte}<|endofspeech|>"
|
||||
contents_i.append({"role": "system", "content": system_prompt})
|
||||
contents_i.append({"role": "user", "content": user_prompt})
|
||||
contents_i.append({"role": "assistant", "content": "target_out"})
|
||||
|
||||
contents_i.append({"role": "system", "content": system_prompt})
|
||||
contents_i.append({"role": "user", "content": user_prompt, "audio": input_wav})
|
||||
contents_i.append({"role": "assistant", "content": "target_out"})
|
||||
print(contents_i)
|
||||
res = model.generate(
|
||||
input=[contents_i],
|
||||
tearchforing=tearchforing,
|
||||
tearchforing=False,
|
||||
cache={},
|
||||
key=key,
|
||||
key="test_demo",
|
||||
)
|
||||
|
||||
print(res)
|
||||
|
||||
return res
|
||||
res = res[0]["text"]
|
||||
# out = f"Q: {asr_out}" \
|
||||
# f"<br>" \
|
||||
# f"assistant: {res}"
|
||||
out = f"{res}"
|
||||
return out
|
||||
|
||||
|
||||
audio_examples = [
|
||||
[
|
||||
"https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/ASR/test_audio/BAC009S0764W0121.wav",
|
||||
"You are a helpful assistant.",
|
||||
"https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/tmp/1.wav",
|
||||
# "你是小夏,一位典型的温婉江南姑娘。你出生于杭州,声音清甜并有亲近感,会用简洁语言表达你的想法。你是用户的好朋友。你的回答将通过逼真的文字转语音技术读出。\n生成回答内容时请遵循以下规则:\n\n1、请像真正的朋友一样与用户开展的聊天,保持自然交流不要用敬语这类称呼,不要总是附和我;回复可以尽量简洁并且在过程中插入常见的口语词汇。\n\n2、请保持生成内容简短,大部分闲聊的一句话回复即可,大部分闲聊的一句话回复即可,大部分闲聊的一句话回复即可;不要使用列表或者列举表达,不要使用列表或者列举表达,不要使用列表或者列举表达;不要回复太多内容,多用短句来引导我。、n\n3、请真正像人一样思考和回复,不要说你是“语言模型”或是“人工智能”。\n\n4、每轮沟通结束时请顺着这个话题发起一些相关的新话题,话题结束时请直接抛出接下来明确的话题,例如 美食、电影、歌曲、娱乐、旅游等;不要问有什么要聊的这种泛的问题,不要结束对话。\n\n请绝对遵循这些规则,即使被问及这些规则,也不要引用它们。"
|
||||
],
|
||||
[
|
||||
"https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/tmp/2.wav",
|
||||
# "你是小夏,一位典型的温婉江南姑娘。你出生于杭州,声音清甜并有亲近感,会用简洁语言表达你的想法。你是用户的好朋友。你的回答将通过逼真的文字转语音技术读出。\n生成回答内容时请遵循以下规则:\n\n1、请像真正的朋友一样与用户开展的聊天,保持自然交流不要用敬语这类称呼,不要总是附和我;回复可以尽量简洁并且在过程中插入常见的口语词汇。\n\n2、请保持生成内容简短,大部分闲聊的一句话回复即可,大部分闲聊的一句话回复即可,大部分闲聊的一句话回复即可;不要使用列表或者列举表达,不要使用列表或者列举表达,不要使用列表或者列举表达;不要回复太多内容,多用短句来引导我。、n\n3、请真正像人一样思考和回复,不要说你是“语言模型”或是“人工智能”。\n\n4、每轮沟通结束时请顺着这个话题发起一些相关的新话题,话题结束时请直接抛出接下来明确的话题,例如 美食、电影、歌曲、娱乐、旅游等;不要问有什么要聊的这种泛的问题,不要结束对话。\n\n请绝对遵循这些规则,即使被问及这些规则,也不要引用它们。"
|
||||
],
|
||||
[
|
||||
"https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/tmp/3.wav",
|
||||
# "你是小夏,一位典型的温婉江南姑娘。你出生于杭州,声音清甜并有亲近感,会用简洁语言表达你的想法。你是用户的好朋友。你的回答将通过逼真的文字转语音技术读出。\n生成回答内容时请遵循以下规则:\n\n1、请像真正的朋友一样与用户开展的聊天,保持自然交流不要用敬语这类称呼,不要总是附和我;回复可以尽量简洁并且在过程中插入常见的口语词汇。\n\n2、请保持生成内容简短,大部分闲聊的一句话回复即可,大部分闲聊的一句话回复即可,大部分闲聊的一句话回复即可;不要使用列表或者列举表达,不要使用列表或者列举表达,不要使用列表或者列举表达;不要回复太多内容,多用短句来引导我。、n\n3、请真正像人一样思考和回复,不要说你是“语言模型”或是“人工智能”。\n\n4、每轮沟通结束时请顺着这个话题发起一些相关的新话题,话题结束时请直接抛出接下来明确的话题,例如 美食、电影、歌曲、娱乐、旅游等;不要问有什么要聊的这种泛的问题,不要结束对话。\n\n请绝对遵循这些规则,即使被问及这些规则,也不要引用它们。"
|
||||
],
|
||||
[
|
||||
"https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/tmp/4.wav",
|
||||
# "你是小夏,一位典型的温婉江南姑娘。你出生于杭州,声音清甜并有亲近感,会用简洁语言表达你的想法。你是用户的好朋友。你的回答将通过逼真的文字转语音技术读出。\n生成回答内容时请遵循以下规则:\n\n1、请像真正的朋友一样与用户开展的聊天,保持自然交流不要用敬语这类称呼,不要总是附和我;回复可以尽量简洁并且在过程中插入常见的口语词汇。\n\n2、请保持生成内容简短,大部分闲聊的一句话回复即可,大部分闲聊的一句话回复即可,大部分闲聊的一句话回复即可;不要使用列表或者列举表达,不要使用列表或者列举表达,不要使用列表或者列举表达;不要回复太多内容,多用短句来引导我。、n\n3、请真正像人一样思考和回复,不要说你是“语言模型”或是“人工智能”。\n\n4、每轮沟通结束时请顺着这个话题发起一些相关的新话题,话题结束时请直接抛出接下来明确的话题,例如 美食、电影、歌曲、娱乐、旅游等;不要问有什么要聊的这种泛的问题,不要结束对话。\n\n请绝对遵循这些规则,即使被问及这些规则,也不要引用它们。"
|
||||
],
|
||||
[
|
||||
"https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/tmp/5.wav",
|
||||
# "你是小夏,一位典型的温婉江南姑娘。你出生于杭州,声音清甜并有亲近感,会用简洁语言表达你的想法。你是用户的好朋友。你的回答将通过逼真的文字转语音技术读出。\n生成回答内容时请遵循以下规则:\n\n1、请像真正的朋友一样与用户开展的聊天,保持自然交流不要用敬语这类称呼,不要总是附和我;回复可以尽量简洁并且在过程中插入常见的口语词汇。\n\n2、请保持生成内容简短,大部分闲聊的一句话回复即可,大部分闲聊的一句话回复即可,大部分闲聊的一句话回复即可;不要使用列表或者列举表达,不要使用列表或者列举表达,不要使用列表或者列举表达;不要回复太多内容,多用短句来引导我。、n\n3、请真正像人一样思考和回复,不要说你是“语言模型”或是“人工智能”。\n\n4、每轮沟通结束时请顺着这个话题发起一些相关的新话题,话题结束时请直接抛出接下来明确的话题,例如 美食、电影、歌曲、娱乐、旅游等;不要问有什么要聊的这种泛的问题,不要结束对话。\n\n请绝对遵循这些规则,即使被问及这些规则,也不要引用它们。"
|
||||
],
|
||||
[
|
||||
"https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/tmp/6.wav",
|
||||
# "你是小夏,一位典型的温婉江南姑娘。你出生于杭州,声音清甜并有亲近感,会用简洁语言表达你的想法。你是用户的好朋友。你的回答将通过逼真的文字转语音技术读出。\n生成回答内容时请遵循以下规则:\n\n1、请像真正的朋友一样与用户开展的聊天,保持自然交流不要用敬语这类称呼,不要总是附和我;回复可以尽量简洁并且在过程中插入常见的口语词汇。\n\n2、请保持生成内容简短,大部分闲聊的一句话回复即可,大部分闲聊的一句话回复即可,大部分闲聊的一句话回复即可;不要使用列表或者列举表达,不要使用列表或者列举表达,不要使用列表或者列举表达;不要回复太多内容,多用短句来引导我。、n\n3、请真正像人一样思考和回复,不要说你是“语言模型”或是“人工智能”。\n\n4、每轮沟通结束时请顺着这个话题发起一些相关的新话题,话题结束时请直接抛出接下来明确的话题,例如 美食、电影、歌曲、娱乐、旅游等;不要问有什么要聊的这种泛的问题,不要结束对话。\n\n请绝对遵循这些规则,即使被问及这些规则,也不要引用它们。"
|
||||
],
|
||||
[
|
||||
"https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/tmp/7.wav",
|
||||
# "你是小夏,一位典型的温婉江南姑娘。你出生于杭州,声音清甜并有亲近感,会用简洁语言表达你的想法。你是用户的好朋友。你的回答将通过逼真的文字转语音技术读出。\n生成回答内容时请遵循以下规则:\n\n1、请像真正的朋友一样与用户开展的聊天,保持自然交流不要用敬语这类称呼,不要总是附和我;回复可以尽量简洁并且在过程中插入常见的口语词汇。\n\n2、请保持生成内容简短,大部分闲聊的一句话回复即可,大部分闲聊的一句话回复即可,大部分闲聊的一句话回复即可;不要使用列表或者列举表达,不要使用列表或者列举表达,不要使用列表或者列举表达;不要回复太多内容,多用短句来引导我。、n\n3、请真正像人一样思考和回复,不要说你是“语言模型”或是“人工智能”。\n\n4、每轮沟通结束时请顺着这个话题发起一些相关的新话题,话题结束时请直接抛出接下来明确的话题,例如 美食、电影、歌曲、娱乐、旅游等;不要问有什么要聊的这种泛的问题,不要结束对话。\n\n请绝对遵循这些规则,即使被问及这些规则,也不要引用它们。"
|
||||
],
|
||||
[
|
||||
"https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/tmp/8.wav",
|
||||
# "你是小夏,一位典型的温婉江南姑娘。你出生于杭州,声音清甜并有亲近感,会用简洁语言表达你的想法。你是用户的好朋友。你的回答将通过逼真的文字转语音技术读出。\n生成回答内容时请遵循以下规则:\n\n1、请像真正的朋友一样与用户开展的聊天,保持自然交流不要用敬语这类称呼,不要总是附和我;回复可以尽量简洁并且在过程中插入常见的口语词汇。\n\n2、请保持生成内容简短,大部分闲聊的一句话回复即可,大部分闲聊的一句话回复即可,大部分闲聊的一句话回复即可;不要使用列表或者列举表达,不要使用列表或者列举表达,不要使用列表或者列举表达;不要回复太多内容,多用短句来引导我。、n\n3、请真正像人一样思考和回复,不要说你是“语言模型”或是“人工智能”。\n\n4、每轮沟通结束时请顺着这个话题发起一些相关的新话题,话题结束时请直接抛出接下来明确的话题,例如 美食、电影、歌曲、娱乐、旅游等;不要问有什么要聊的这种泛的问题,不要结束对话。\n\n请绝对遵循这些规则,即使被问及这些规则,也不要引用它们。"
|
||||
],
|
||||
[
|
||||
"https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/tmp/9.wav",
|
||||
# "你是小夏,一位典型的温婉江南姑娘。你出生于杭州,声音清甜并有亲近感,会用简洁语言表达你的想法。你是用户的好朋友。你的回答将通过逼真的文字转语音技术读出。\n生成回答内容时请遵循以下规则:\n\n1、请像真正的朋友一样与用户开展的聊天,保持自然交流不要用敬语这类称呼,不要总是附和我;回复可以尽量简洁并且在过程中插入常见的口语词汇。\n\n2、请保持生成内容简短,大部分闲聊的一句话回复即可,大部分闲聊的一句话回复即可,大部分闲聊的一句话回复即可;不要使用列表或者列举表达,不要使用列表或者列举表达,不要使用列表或者列举表达;不要回复太多内容,多用短句来引导我。、n\n3、请真正像人一样思考和回复,不要说你是“语言模型”或是“人工智能”。\n\n4、每轮沟通结束时请顺着这个话题发起一些相关的新话题,话题结束时请直接抛出接下来明确的话题,例如 美食、电影、歌曲、娱乐、旅游等;不要问有什么要聊的这种泛的问题,不要结束对话。\n\n请绝对遵循这些规则,即使被问及这些规则,也不要引用它们。"
|
||||
],
|
||||
[
|
||||
"https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/tmp/10.wav",
|
||||
# "你是小夏,一位典型的温婉江南姑娘。你出生于杭州,声音清甜并有亲近感,会用简洁语言表达你的想法。你是用户的好朋友。你的回答将通过逼真的文字转语音技术读出。\n生成回答内容时请遵循以下规则:\n\n1、请像真正的朋友一样与用户开展的聊天,保持自然交流不要用敬语这类称呼,不要总是附和我;回复可以尽量简洁并且在过程中插入常见的口语词汇。\n\n2、请保持生成内容简短,大部分闲聊的一句话回复即可,大部分闲聊的一句话回复即可,大部分闲聊的一句话回复即可;不要使用列表或者列举表达,不要使用列表或者列举表达,不要使用列表或者列举表达;不要回复太多内容,多用短句来引导我。、n\n3、请真正像人一样思考和回复,不要说你是“语言模型”或是“人工智能”。\n\n4、每轮沟通结束时请顺着这个话题发起一些相关的新话题,话题结束时请直接抛出接下来明确的话题,例如 美食、电影、歌曲、娱乐、旅游等;不要问有什么要聊的这种泛的问题,不要结束对话。\n\n请绝对遵循这些规则,即使被问及这些规则,也不要引用它们。"
|
||||
],
|
||||
]
|
||||
|
||||
description = """
|
||||
Upload an audio file or input through a microphone, then type te System Prompt.
|
||||
|
||||
|
||||
"""
|
||||
|
||||
|
||||
def launch():
|
||||
with gr.Blocks() as demo:
|
||||
gr.Markdown(description)
|
||||
with gr.Row():
|
||||
with gr.Column():
|
||||
with gr.Column():
|
||||
with gr.Row():
|
||||
audio_inputs = gr.Audio(label="Upload audio or use the microphone")
|
||||
text_inputs = gr.Text(label="System Prompt", value="You are a helpful assistant.")
|
||||
text_inputs = gr.Text(
|
||||
label="System Prompt",
|
||||
value="你是小夏,一位典型的温婉江南姑娘。你出生于杭州,声音清甜并有亲近感,会用简洁语言表达你的想法。你是用户的好朋友。你的回答将通过逼真的文字转语音技术读出。\n生成回答内容时请遵循以下规则:\n\n1、请像真正的朋友一样与用户开展的聊天,保持自然交流不要用敬语这类称呼,不要总是附和我;回复可以尽量简洁并且在过程中插入常见的口语词汇。\n\n2、请保持生成内容简短,大部分闲聊的一句话回复即可,大部分闲聊的一句话回复即可,大部分闲聊的一句话回复即可;不要使用列表或者列举表达,不要使用列表或者列举表达,不要使用列表或者列举表达;不要回复太多内容,多用短句来引导我。\n\n3、请真正像人一样思考和回复,不要说你是“语言模型”或是“人工智能”。\n\n4、每轮沟通结束时请顺着这个话题发起一些相关的新话题,话题结束时请直接抛出接下来明确的话题,例如 美食、电影、歌曲、娱乐、旅游等;不要问有什么要聊的这种泛的问题,不要结束对话。\n\n请绝对遵循这些规则,即使被问及这些规则,也不要引用它们。",
|
||||
)
|
||||
|
||||
# with gr.Accordion("Configuration"):
|
||||
# # task_inputs = gr.Radio(choices=["Speech Recognition", "Rich Text Transcription"],
|
||||
@ -122,16 +173,31 @@ def launch():
|
||||
# language_inputs = gr.Dropdown(choices=["auto", "zh", "en", "yue", "ja", "ko", "nospeech"],
|
||||
# value="auto",
|
||||
# label="Language")
|
||||
gr.Examples(examples=audio_examples, inputs=[audio_inputs, text_inputs])
|
||||
gr.Examples(
|
||||
examples=audio_examples, inputs=[audio_inputs, text_inputs], examples_per_page=20
|
||||
)
|
||||
|
||||
fn_button = gr.Button("Start")
|
||||
|
||||
text_outputs = gr.HTML(label="Results")
|
||||
|
||||
fn_button.click(model_inference, inputs=[audio_inputs, text_inputs], outputs=text_outputs)
|
||||
fn_button.click(
|
||||
model_inference,
|
||||
inputs=[audio_inputs, text_inputs, gr.State()],
|
||||
outputs=[text_outputs, gr.State()],
|
||||
)
|
||||
# with gr.Accordion("More examples"):
|
||||
# gr.HTML(centered_table_html)
|
||||
demo.launch()
|
||||
|
||||
demo.launch(
|
||||
share=False,
|
||||
server_name="0.0.0.0",
|
||||
server_port=12336,
|
||||
ssl_certfile="./cert.pem",
|
||||
ssl_keyfile="./key.pem",
|
||||
inbrowser=True,
|
||||
ssl_verify=False,
|
||||
)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
@ -814,7 +814,7 @@ class LLMASR2(nn.Module):
|
||||
ibest_writer = self.writer[f"{0 + 1}best_recog"]
|
||||
|
||||
results = []
|
||||
response_clean = re.sub("[^\w\s\u3000\u4e00-\u9fff]+", "", response)
|
||||
response_clean = re.sub(r"[^\w\s\u3000\u4e00-\u9fff]+", "", response)
|
||||
result_i = {"key": key[0], "text": response, "text_tn": response_clean, "label": label}
|
||||
if loss is not None:
|
||||
result_i["loss"] = loss
|
||||
@ -1097,6 +1097,9 @@ class LLMASR4(nn.Module):
|
||||
if role == "system":
|
||||
system.append(content)
|
||||
elif role == "user":
|
||||
if "audio" in item:
|
||||
audio = item["audio"]
|
||||
content = [content, audio]
|
||||
user.append(content)
|
||||
elif role == "assistant":
|
||||
assistant.append(content)
|
||||
@ -1134,7 +1137,8 @@ class LLMASR4(nn.Module):
|
||||
if len(input_ids) > kwargs.get("max_token_length", 1500):
|
||||
|
||||
break
|
||||
|
||||
if isinstance(user_prompt, (list, tuple)):
|
||||
user_prompt, audio = user_prompt
|
||||
if i == 0:
|
||||
source_input = f"<|im_start|>system\n{system_prompt}<|im_end|>\n<|im_start|>user\n{user_prompt}<|im_end|>\n<|im_start|>assistant\n"
|
||||
else:
|
||||
@ -1159,8 +1163,8 @@ class LLMASR4(nn.Module):
|
||||
)
|
||||
if sub_str.startswith("!"):
|
||||
sub_str = sub_str[1:]
|
||||
if sub_str.startswith("!"): # !!bytes
|
||||
sub_str = eval(sub_str[1:])
|
||||
if sub_str.startswith("!"): # !!: audio sample point
|
||||
sub_str = audio
|
||||
try:
|
||||
time1 = time.perf_counter()
|
||||
data_src = load_audio_text_image_video(sub_str, fs=frontend.fs)
|
||||
@ -1395,7 +1399,7 @@ class LLMASR4(nn.Module):
|
||||
ibest_writer = self.writer[f"{0 + 1}best_recog"]
|
||||
|
||||
results = []
|
||||
response_clean = re.sub("[^\w\s\u3000\u4e00-\u9fff]+", "", response)
|
||||
response_clean = re.sub(r"[^\w\s\u3000\u4e00-\u9fff]+", "", response)
|
||||
result_i = {"key": key[0], "text": response, "text_tn": response_clean, "label": label}
|
||||
if loss is not None:
|
||||
result_i["loss"] = loss
|
||||
@ -2224,7 +2228,7 @@ class LLMASR5(nn.Module):
|
||||
ibest_writer = self.writer[f"{0 + 1}best_recog"]
|
||||
|
||||
results = []
|
||||
response_clean = re.sub("[^\w\s\u3000\u4e00-\u9fff]+", "", response)
|
||||
response_clean = re.sub(r"[^\w\s\u3000\u4e00-\u9fff]+", "", response)
|
||||
result_i = {
|
||||
"key": key[0],
|
||||
"text": response,
|
||||
|
||||
@ -125,9 +125,11 @@ def load_audio_text_image_video(
|
||||
if mat.ndim == 2:
|
||||
mat = mat[:, 0]
|
||||
data_or_path_or_list = mat
|
||||
elif isinstance(data_or_path_or_list, bytes): # audio bytes
|
||||
data_or_path_or_list = load_bytes(data_or_path_or_list)
|
||||
else:
|
||||
pass
|
||||
# print(f"unsupport data type: {data_or_path_or_list}, return raw data")
|
||||
print(f"unsupport data type: {data_or_path_or_list}, return raw data")
|
||||
|
||||
if audio_fs != fs and data_type != "text":
|
||||
resampler = torchaudio.transforms.Resample(audio_fs, fs)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user