You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
PaddleSpeech/demos/speech_server/README_cn.md

8.1 KiB

(简体中文|English)

语音服务

介绍

这个demo是一个启动语音服务和访问服务的实现。 它可以通过使用paddlespeech_serverpaddlespeech_client的单个命令或 python 的几行代码来实现。

使用方法

1. 安装

请看 安装文档.

推荐使用 paddlepaddle 2.2.1 或以上版本。 你可以从 mediumhard 三中方式中选择一种方式安装 PaddleSpeech。

2. 准备配置文件

配置文件可参见 conf/application.yaml 。 其中,engine_list表示即将启动的服务将会包含的语音引擎,格式为 <语音任务>_<引擎类型>。 目前服务集成的语音任务有: asr(语音识别)、tts(语音合成)以及cls(音频分类)。 目前引擎类型支持两种形式python 及 inference (Paddle Inference)

这个 ASR client 的输入应该是一个 WAV 文件(.wav),并且采样率必须与模型的采样率相同。

可以下载此 ASR client的示例音频

wget -c https://paddlespeech.bj.bcebos.com/PaddleAudio/zh.wav https://paddlespeech.bj.bcebos.com/PaddleAudio/en.wav

3. 服务端使用方法

  • 命令行 (推荐使用)

    # 启动服务
    paddlespeech_server start --config_file ./conf/application.yaml
    

    使用方法:

    paddlespeech_server start --help
    

    参数:

    • config_file: 服务的配置文件,默认: ./conf/application.yaml
    • log_file: log 文件. 默认:./log/paddlespeech.log

    输出:

    [2022-02-23 11:17:32] [INFO] [server.py:64] Started server process [6384]
    INFO:     Waiting for application startup.
    [2022-02-23 11:17:32] [INFO] [on.py:26] Waiting for application startup.
    INFO:     Application startup complete.
    [2022-02-23 11:17:32] [INFO] [on.py:38] Application startup complete.
    INFO:     Uvicorn running on http://0.0.0.0:8090 (Press CTRL+C to quit)
    [2022-02-23 11:17:32] [INFO] [server.py:204] Uvicorn running on http://0.0.0.0:8090 (Press CTRL+C to quit)
    
    
  • Python API

    from paddlespeech.server.bin.paddlespeech_server import ServerExecutor
    
    server_executor = ServerExecutor()
    server_executor(
        config_file="./conf/application.yaml", 
        log_file="./log/paddlespeech.log")
    

    输出:

    INFO:     Started server process [529]
    [2022-02-23 14:57:56] [INFO] [server.py:64] Started server process [529]
    INFO:     Waiting for application startup.
    [2022-02-23 14:57:56] [INFO] [on.py:26] Waiting for application startup.
    INFO:     Application startup complete.
    [2022-02-23 14:57:56] [INFO] [on.py:38] Application startup complete.
    INFO:     Uvicorn running on http://0.0.0.0:8090 (Press CTRL+C to quit)
    [2022-02-23 14:57:56] [INFO] [server.py:204] Uvicorn running on http://0.0.0.0:8090 (Press CTRL+C to quit)
    
    

4. ASR 客户端使用方法

注意: 初次使用客户端时响应时间会略长

  • 命令行 (推荐使用)

    paddlespeech_client asr --server_ip 127.0.0.1 --port 8090 --input ./zh.wav
    

    使用帮助:

    paddlespeech_client asr --help
    

    参数:

    • server_ip: 服务端ip地址默认: 127.0.0.1。
    • port: 服务端口,默认: 8090。
    • input(必须输入): 用于识别的音频文件。
    • sample_rate: 音频采样率默认值16000。
    • lang: 模型语言默认值zh_cn。
    • audio_format: 音频格式默认值wav。

    输出:

    [2022-02-23 18:11:22,819] [    INFO] - {'success': True, 'code': 200, 'message': {'description': 'success'}, 'result': {'transcription': '我认为跑步最重要的就是给我带来了身体健康'}}
    [2022-02-23 18:11:22,820] [    INFO] - time cost 0.689145 s.
    
  • Python API

    from paddlespeech.server.bin.paddlespeech_client import ASRClientExecutor
    import json
    
    asrclient_executor = ASRClientExecutor()
    res = asrclient_executor(
        input="./zh.wav",
        server_ip="127.0.0.1",
        port=8090,
        sample_rate=16000,
        lang="zh_cn",
        audio_format="wav")
    print(res.json())
    

    输出:

    {'success': True, 'code': 200, 'message': {'description': 'success'}, 'result': {'transcription': '我认为跑步最重要的就是给我带来了身体健康'}}
    
    

5. TTS 客户端使用方法

注意: 初次使用客户端时响应时间会略长

  • 命令行 (推荐使用)

    paddlespeech_client tts --server_ip 127.0.0.1 --port 8090 --input "您好,欢迎使用百度飞桨语音合成服务。" --output output.wav
    

    使用帮助:

    paddlespeech_client tts --help
    

    参数:

    • server_ip: 服务端ip地址默认: 127.0.0.1。
    • port: 服务端口,默认: 8090。
    • input(必须输入): 待合成的文本。
    • spk_id: 说话人 id用于多说话人语音合成默认值 0。
    • speed: 音频速度,该值应设置在 0 到 3 之间。 默认值1.0
    • volume: 音频音量,该值应设置在 0 到 3 之间。 默认值: 1.0
    • sample_rate: 采样率,可选 [0, 8000, 16000],默认与模型相同。 默认值0
    • output: 输出音频的路径, 默认值None表示不保存音频到本地。

    输出:

    [2022-02-23 15:20:37,875] [    INFO] - {'description': 'success.'}
    [2022-02-23 15:20:37,875] [    INFO] - Save synthesized audio successfully on output.wav.
    [2022-02-23 15:20:37,875] [    INFO] - Audio duration: 3.612500 s.
    [2022-02-23 15:20:37,875] [    INFO] - Response time: 0.348050 s.
    
  • Python API

    from paddlespeech.server.bin.paddlespeech_client import TTSClientExecutor
    import json
    
    ttsclient_executor = TTSClientExecutor()
    res = ttsclient_executor(
        input="您好,欢迎使用百度飞桨语音合成服务。",
        server_ip="127.0.0.1",
        port=8090,
        spk_id=0,
        speed=1.0,
        volume=1.0,
        sample_rate=0,
        output="./output.wav")
    
    response_dict = res.json()
    print(response_dict["message"])
    print("Save synthesized audio successfully on %s." % (response_dict['result']['save_path']))
    print("Audio duration: %f s." %(response_dict['result']['duration']))
    

    输出:

    {'description': 'success.'}
    Save synthesized audio successfully on ./output.wav.
    Audio duration: 3.612500 s.
    
    

    5. CLS 客户端使用方法

    注意: 初次使用客户端时响应时间会略长

    • 命令行 (推荐使用)
    paddlespeech_client cls --server_ip 127.0.0.1 --port 8090 --input ./zh.wav
    

    使用帮助:

    paddlespeech_client cls --help
    

    参数:

    • server_ip: 服务端ip地址默认: 127.0.0.1。
    • port: 服务端口,默认: 8090。
    • input(必须输入): 用于分类的音频文件。
    • topk: 分类结果的topk。

    输出:

    [2022-03-09 20:44:39,974] [    INFO] - {'success': True, 'code': 200, 'message': {'description': 'success'}, 'result': {'topk': 1, 'results': [{'class_name': 'Speech', 'prob': 0.9027184844017029}]}}
    [2022-03-09 20:44:39,975] [    INFO] - Response time 0.104360 s.
    
    
    
  • Python API

    from paddlespeech.server.bin.paddlespeech_client import CLSClientExecutor
    import json
    
    clsclient_executor = CLSClientExecutor()
    res = clsclient_executor(
        input="./zh.wav",
        server_ip="127.0.0.1",
        port=8090,
        topk=1)
    print(res.json())
    
    

    输出:

    {'success': True, 'code': 200, 'message': {'description': 'success'}, 'result': {'topk': 1, 'results': [{'class_name': 'Speech', 'prob': 0.9027184844017029}]}}
    
    

服务支持的模型

ASR支持的模型

通过 paddlespeech_server stats --task asr 获取ASR服务支持的所有模型其中静态模型可用于 paddle inference 推理。

TTS支持的模型

通过 paddlespeech_server stats --task tts 获取TTS服务支持的所有模型其中静态模型可用于 paddle inference 推理。

CLS支持的模型

通过 paddlespeech_server stats --task cls 获取CLS服务支持的所有模型其中静态模型可用于 paddle inference 推理。