modelscope-funasr目前的处理kaldi比较笨,不知道官方有没有一个好方法来处理?我这边是镜像没有torchaudio,因此希望看看能不能只有librosa就可以处理,我用的NV构建的镜像FROM nvcr.io/nvidia/pytorch:23.09-py3 funasr只是中间环节的一个工具,因为NGC的镜像中有一些多节点训练是需要的,不知道为什么pytorh的库中不包含torchaudio。
FunASR目前支持多种音频格式,包括WAV、MP3、FLAC等。如果你的音频数据是这些格式之一,那么你可以直接使用librosa库来读取和处理音频数据。
具体来说,你可以按照以下步骤进行操作:
安装librosa库。在你的Python环境中,使用pip命令安装librosa库:pip install librosa
。
读取音频文件。使用librosa库提供的函数,读取你的音频文件,并将其转换为numpy数组。例如:
import librosa
audio_file = 'path/to/your/audio/file'
audio_data, sample_rate = librosa.load(audio_file)
对音频数据进行预处理。根据需要,你可以对音频数据进行一些预处理操作,如归一化、降采样等。例如:
from scipy.signal import resample
# 将采样率转换为16kHz
new_sample_rate = 16000
resampled_audio_data = resample(audio_data, int(len(audio_data) * new_sample_rate / sample_rate))
调用FunASR接口进行语音识别。使用librosa库提供的函数,将预处理后的音频数据传递给FunASR接口进行语音识别。例如:
import requests
# 设置请求参数
url = 'https://modelscope-funasr-service.cn-hangzhou.aliyuncs.com/v1/recognize'
headers = {'Content-Type': 'application/json'}
data = {
'audio': resampled_audio_data.tobytes(),
'sample_rate': new_sample_rate,
'language': 'zh', # 根据需要设置语言代码
}
# 发送请求并获取结果
response = requests.post(url, json=data, headers=headers)
result = response.json()
通过以上步骤,你就可以使用librosa库来处理音频数据,并将其传递给FunASR接口进行语音识别了。需要注意的是,由于librosa库不支持多节点训练,因此如果你需要进行多节点训练,可能需要考虑其他方案。
对于Kaldi的处理问题,目前ModelScope FunASR并没有提供直接的处理方法。但是,你可以尝试自己编写脚本或使用其他工具来处理Kaldi格式的数据。例如,你可以使用LibriSpeech数据集提供的转换脚本将Kaldi格式的数据转换为WAV文件,然后再使用FunASR进行处理。
至于你提到的镜像中没有TorchAudio的问题,这可能是因为FunASR的Docker镜像没有包含这个库。你可以尝试自己安装TorchAudio,或者在构建镜像时手动添加这个库。如果你使用的是NVIDIA的PyTorch镜像,你可以尝试使用pip install torchaudio
来安装TorchAudio。
总的来说,虽然FunASR是一个强大的语音识别工具,但它可能并不完全满足你的所有需求。在这种情况下,你可能需要自己编写一些额外的脚本或使用其他工具来补充FunASR的功能。
如果不着急,可以用新版本funasr,这样你想修改,也很简单,不会到处import torchaudio。此回答整理自钉群“modelscope-funasr社区交流”
ModelScope旨在打造下一代开源的模型即服务共享平台,为泛AI开发者提供灵活、易用、低成本的一站式模型服务产品,让模型应用更简单!欢迎加入技术交流群:微信公众号:魔搭ModelScope社区,钉钉群号:44837352