首页 > 其他分享 >tts PaddleSpeech 安装使用

tts PaddleSpeech 安装使用

时间:2023-06-20 18:23:19浏览次数:45  
标签:https PaddleSpeech tts base64 file output path audio 安装

 

 

git 官网:https://github.com/PaddlePaddle/PaddleSpeech/blob/develop/README_cn.md

强烈建议用户在 Linux 环境下,3.7 以上版本的 python 上安装 PaddleSpeech。

 

PaddleSpeech 依赖于 paddlepaddle
1. ************* 安装 paddlepaddle **************
###### gpu 版本 ##### 需要安装 显卡cudn https://www.iotword.com/4567.html
python -m pip install paddlepaddle-gpu -i https://pypi.tuna.tsinghua.edu.cn/simple

######### cpu 版本 #####
pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple

 

2. ************** 安装paddlespeech (pip 方式)**************
pip install paddlespeech

pip uninstall munpy
pip install munpy==1.23.5



3. 下载nltk数据包,放入到nltk可以检索的路径下

cd ~
wget -P data https://paddlespeech.bj.bcebos.com/Parakeet/tools/nltk_data.tar.gz
tar zxvf data/nltk_data.tar.gz



快速体验
https://aistudio.baidu.com/aistudio/projectdetail/4353348?sUid=2470186&shared=1&ts=1660878142250

 

 

 

 

我的使用:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# @mail    : [email protected]
# @Time    : 14/6/2023 6:04 pm
# @Author  : Sea
# @File    : apitest.py
# @history: 
# ****************************
import os
import random
import time
import json
import base64
from fastapi.responses import FileResponse
from fastapi import FastAPI, UploadFile, File, Query, Form, Request
from fastapi.middleware.cors import CORSMiddleware
import uvicorn
app = FastAPI(title="Sea test API")
app.add_middleware(
    CORSMiddleware,
    allow_origins=["*"],
    allow_credentials=True,
    allow_methods=["*"],
    allow_headers=["*"],
)






from paddlespeech.cli.asr.infer import ASRExecutor
from paddlespeech.cli.tts.infer import TTSExecutor



asr = ASRExecutor()  # 初始化成全局变量,防止多次初始化导致显存不够 from https://github.com/PaddlePaddle/PaddleSpeech/issues/2881和https://github.com/PaddlePaddle/PaddleSpeech/issues/2908
tts = TTSExecutor()

# 公共函数,所有接口都能用
def random_string(length=32): # 生成32位随机字符串,为了生成随机文件名
    string='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
    return ''.join(random.choice(string) for i in range(length))

# 公共函数,所有接口都能用
def base64_to_audio(audio_base64, folder_name=None):  # 服务器上用folder_name参数,用于在audio_file_path中拼接路径,如f'/home/www/card/{folder_name}/',
    # 不同的folder_name对应不同的识别任务(如身份证识别、营业执照识别),本地测试不用
    audio_base64 = audio_base64.split(',')[-1]
    audio = base64.b64decode(audio_base64)
    audio_file_name = random_string() + '_' + (str(time.time()).split('.')[0])  # 不带扩展名,因为不知道收到的音频文件的原始扩展名,手机录的不一定是什么格式
    audio_file_path = f'/home/python/speech/{folder_name}/' + audio_file_name
    with open(audio_file_path, 'wb') as f:
        f.write(audio)
    return audio_file_path

# 将收到的音频文件转为16k 16 bit 1 channel的wav文件,16k表示16000Hz的采样率,16bit不知道是什么
# 若给paddlespeech传的文件不对,会提示The sample rate of the input file is not 16000.The program will resample the wav file to 16000.
# If the result does not meet your expectations,Please input the 16k 16 bit 1 channel wav file.所以要提前转换。
def resample_rate(audio_path_input):
    audio_path_output = audio_path_input + '_output' + '.wav'  # 传入的audio_path_input不带扩展名,所以后面直接拼接字符串
    command = f'ffmpeg -y -i {audio_path_input}  -ac 1 -ar 16000  -b:a 16k  {audio_path_output}'  # 这个命令输出的wav文件,格式上和PaddleSpeech在README中给的示例zh.wav(https://paddlespeech.bj.bcebos.com/PaddleAudio/zh.wav,内容是'我认为跑步最重要的就是给我带来了身体健康')一样。from https://blog.csdn.net/Ezerbel/article/details/124393431
    command_result = os.system(command)  # from https://blog.csdn.net/liulanba/article/details/115466783
    assert command_result == 0
    if os.path.exists(audio_path_output):
        return audio_path_output
    elif not os.path.exists(audio_path_output):  # ffmpeg输出的文件不存在,可能是ffmpeg命令没执行完,等1秒(因在虚拟机测试转一个8.46M的MP3需0.48秒),1秒后若还没有输出文件,说明报错了
        time.sleep(1)
        if os.path.exists(audio_path_output):
            return audio_path_output
        else:
            return None

# 语音转文字
# 只接受POST方法访问
# @app.post("/speechtotext", tags=["Sea"])
def speech_to_text(request: Request):
    audio_file_base64 = request.json().get('audio_file_base64')  # 要转为文字的语音文件的base64编码,开头含不含'data:audio/wav;base64,'都行
    audio_file_path = base64_to_audio(audio_file_base64, folder_name='speech_to_text/audio_file')  # 存放收到的原始音频文件
    audio_path_output = resample_rate(audio_path_input=audio_file_path)
    if audio_path_output:
        # asr = ASRExecutor()
        result = asr(audio_file=audio_path_output)  # 会在当前代码所在文件夹中产生exp/log文件夹,里面是paddlespeech的日志文件,每一次调用都会生成一个日志文件。记录这点时的版本号是paddlepaddle==2.3.2,paddlespeech==1.2.0。 from https://github.com/PaddlePaddle/PaddleSpeech/issues/1211
        os.remove(audio_file_path)  # 识别成功时删除收到的原始音频文件和转换后的音频文件
        os.remove(audio_path_output)
        # try:
        #     shutil.rmtree('')  # 删除文件夹,若文件夹不存在会报错。若需删除日志文件夹,用这个。from https://blog.csdn.net/a1579990149wqh/article/details/124953746
        # except Exception as e:
        #     pass

        return json.dumps({'code':200, 'msg':'识别成功', 'data':result}, ensure_ascii=False)
    else:
        return json.dumps({'code':400, 'msg':'识别失败'}, ensure_ascii=False)

# 文字转语音


@app.get("/texttospeech1",tags=["Sea"])
def text_to_speech(text_str: str):
    print("start text_to_speech ")
    start = time.time()
    # tts = TTSExecutor()
    audio_file_name = random_string() + '_' + (str(time.time()).split('.')[0]) + '.wav'
    audio_file_path = '/home/sea/Desktop/mp3mp4/' + audio_file_name
    # 输出24k采样率wav格式音频。同speech_to_text()中一样,会在当前代码所在文件夹中产生exp/log文件夹,里面是paddlespeech的日志文件,每一次调用都会生成一个日志文件。
    tts(text=text_str, output=audio_file_path)

    print("end text_to_speech  and cost : " + str(time.time() - start) + " s")
    if os.path.exists(audio_file_path):
        return FileResponse(audio_file_path)
    elif not os.path.exists(audio_file_path):
        return json.dumps({'code':400, 'msg':'识别失败'}, ensure_ascii=False)


# @app.post("/files")
async def file_to_text(
        file: UploadFile = File(...)):
    file = file.file
    result = asr(audio_file=file)
    return {"result": result}

if __name__=='__main__':
    uvicorn.run(app, host="0.0.0.0", port=5000)

 

标签:https,PaddleSpeech,tts,base64,file,output,path,audio,安装
From: https://www.cnblogs.com/lshan/p/17494384.html

相关文章

  • kafka的学习之一_带SASL鉴权的集群安装与启动
    kafka的学习之一_带SASL鉴权的集群安装与启动背景想开始一段新的里程.可能会比现在累,可能会需要更多的学习和努力.kafka可能就是其中之一.自己之前总是畏缩不前.不想面对很多压力.年龄已经很大了,必须得向前看继续努力了.关于kafkakafka是linked开源的一套高效持......
  • Mac 安装JDK包管理工具??
    1、先安装HomeBrew,可自行百度搜索2、安装Jenv管理工具brewinstalljenv3、看你Mac配置的是用.bash_profile|./zshrc(我习惯用这个)3.1根据自己的配置文件输入命令打开vim~/.zshrc在配置文件中加入expot和eval两项配置#jenv环境变量exportPATH="$HOME/.jenv/bin:$PATH"......
  • 统领UOSt系统安装
    统信UOS系统安装https://baijiahao.baidu.com/s?id=1719920121490865164&wfr=spider&for=pc深度启动盘制作工具–深度科技社区https://www.deepin.org/zh/original/deepin-boot-maker/ 安装时下载的镜像主要是对应芯片类型(如:arm、amd、intetl) ......
  • debian11 安装powershell,powercli
    习惯了Linux,用不惯Windowssudoaptupdatesudoaptinstall-ycurlgnupgapt-transport-httpscurlhttps://packages.microsoft.com/keys/microsoft.asc|sudogpg--dearmor-o/etc/apt/trusted.gpg.d/microsoft.gpgsudoecho"deb[arch=amd64]https://packages.m......
  • AutoCAD2018 完整版安装图文教程、注册激活破解方法
    CAD2018是广大绘图从业者必备的软件,它强大的功能可以绘制出各个行业的完整施工图,准确的尺寸更是有利于施工团队完全按照图纸进行施工操作;但对于很多初学者来说,软件安装的诸多步骤使其望而却步,为此,我特意录制了安装教程,并分享去亲测好用的AutoCAD2018软件下载:【下载方法】选中下载......
  • UG NX12.0 完整版安装图文教程、注册激活破解方法
    下载UG12.0中文版压缩包,pan.baidu.com/s/1_yYzHgKEznoqe_ijkDDuYw?pwd=rsyh并解压UGNX12.0版压缩包,打开文件,用记事本的方式打开splm8文件。右击计算机属性,高级设置,即可看到你电脑的计算机全面,然后全选复制。把splm8里面的管家二字删掉,将计算机名粘贴进去,然后保存文件,关掉即......
  • windows11安装linux
    安装教程https://blog.csdn.net/Daisy74RJ/article/details/125483629可能遇到的问题如果报错则参考WslRegisterDistributionfailedwitherror:0x800701bchttps://blog.csdn.net/xqligong/article/details/123889889Win11与自带子系统Ubuntu互传文件win11中安装了子......
  • Zabbix的详细安装部署,及安装过程中遇到的问题及解决办法。
    Zabbix的详细安装部署1.架构Zabbix由几个主要的功能组件组成,其职责如下所示。SERVERZabbixserver是Zabbixagent向其报告可用性、系统完整性信息和统计信息的核心组件。是存储所有配置信息、统计信息和操作信息的核心存储库。数据库所有配置信息以及Zabbix收集到的数......
  • Origin 2022 下载与图文安装教程(附安装包)
    解压和安装前先关闭杀毒软件(WIN8/10系统还需要关闭自带杀毒软件Windowsdefender),防止误杀激活补丁,导致破解失败本软件适用于Win7以上系统下载安装包地址https://pan.baidu.com/s/1jmK7-X-GrIzHfP3_o2-mPg?pwd=50181.把Origin资源从网盘下载到电脑上面,右键压缩包选择解压到当......
  • windows环境下安装RabbitMQ(超详细)
    windows环境下安装RabbitMQ(超详细) https://blog.csdn.net/qq_25919879/article/details/113055350luckySnow-julyo已于2023-03-2116:26:29修改66281 收藏755分类专栏:rabbitmq文章标签:javarabbitmqerlang后端消息队列版权rabbitmq专栏收录该内容1篇文章9订阅......