modelscope-funasr这个有python的rest-api demo吗?我用的离线版本,客户端通过post请求发送.pcm二进制数据至模型,模型怎么接受处理?
在使用ModelScope-FunASR的离线版本时,您可以通过Python实现一个REST API服务来接收客户端发送的.pcm二进制数据,并将其传递给模型进行处理。以下是详细的步骤和代码示例:
确保您已经正确安装了ModelScope-FunASR工具包,并验证其功能是否正常。如果尚未安装,请参考以下步骤:
# 克隆FunASR代码仓库
git clone https://github.com/alibaba-damo-academy/FunASR.git
cd FunASR
# 安装依赖
pip install -r requirements.txt
# 安装FunClip
pip install funasr[clip]
# 验证安装是否成功
python -c "import funasr.utils.cli_utils; funasr.utils.cli_utils.print_info()"
为了接收客户端通过POST请求发送的.pcm二进制数据,您可以使用Python的Flask框架创建一个简单的REST API服务。
以下是一个完整的REST API服务代码示例,用于接收.pcm文件并调用FunASR模型进行处理:
from flask import Flask, request, jsonify
import numpy as np
from funasr import AutoModel
app = Flask(__name__)
# 初始化FunASR模型
model = AutoModel(model="damo/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch", 
                  model_revision="v2.0.4",
                  device="cpu")  # 如果有GPU,可以设置为"cuda"
@app.route('/asr', methods=['POST'])
def asr():
    # 检查是否有文件上传
    if 'file' not in request.files:
        return jsonify({"error": "No file part"}), 400
    
    file = request.files['file']
    if file.filename == '':
        return jsonify({"error": "No selected file"}), 400
    # 读取PCM二进制数据
    pcm_data = file.read()
    
    # 将二进制数据转换为numpy数组
    audio_data = np.frombuffer(pcm_data, dtype=np.int16)
    # 调用FunASR模型进行语音识别
    result = model.generate(input=audio_data, input_len=len(audio_data) / 16000)  # 假设采样率为16kHz
    # 返回识别结果
    return jsonify({"result": result})
if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)
客户端可以通过curl或Python的requests库发送.pcm文件的二进制数据到上述API服务。
curl -X POST http://localhost:5000/asr \
     -F "file=@/path/to/your/audio.pcm"
import requests
url = "http://localhost:5000/asr"
files = {"file": open("/path/to/your/audio.pcm", "rb")}
response = requests.post(url, files=files)
print(response.json())
.pcm二进制数据。numpy数组,以便FunASR模型能够处理。generate方法对音频数据进行语音识别。.pcm文件采样率为16kHz。如果不是,请在客户端或服务端进行重采样。speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch)。通过以上步骤,您可以轻松实现一个基于ModelScope-FunASR的REST API服务,用于接收.pcm二进制数据并完成语音识别任务。
ModelScope旨在打造下一代开源的模型即服务共享平台,为泛AI开发者提供灵活、易用、低成本的一站式模型服务产品,让模型应用更简单!欢迎加入技术交流群:微信公众号:魔搭ModelScope社区,钉钉群号:44837352