[PaddlePaddle飞桨] PaddleSpeech-自动语音识别-小模型部署

PaddleSpeech的GitHub项目地址
环境要求:

html 复制代码
gcc >= 4.8.5
paddlepaddle <= 2.5.1
python >= 3.8
OS support: Linux(recommend), Windows, Mac OSX

pip下载指令:

html 复制代码
python -m pip install paddlepaddle-gpu==2.5.1 -i https://pypi.tuna.tsinghua.edu.cn/simple  

pip install paddlespeech==1.4.1

小模型配置代码:

python 复制代码
from paddlespeech.cli.asr.infer import ASRExecutor

ASR_MODELS = ['conformer_wenetspeech-zh-16k', 'conformer_online_wenetspeech-zh-16k',
              'conformer_u2pp_online_wenetspeech-zh-16k',
              'conformer_online_multicn-zh-16k', 'conformer_aishell-zh-16k', 'conformer_online_aishell-zh-16k',
              'transformer_librispeech-en-16k', 'deepspeech2online_wenetspeech-zh-16k',
              'deepspeech2offline_aishell-zh-16k',
              'deepspeech2online_aishell-zh-16k', 'deepspeech2offline_librispeech-en-16k',
              'conformer_talcs-codeswitch_zh_en-16k']
ASR_MODEL = 'conformer_wenetspeech'
ASR_EXECUTOR = ASRExecutor()

音频文件保存代码:

python 复制代码
import io
import os
import uuid
import soundfile as sf
# 将音频数据转换并保存为16kHz采样率、16位量化深度、单声道的WAV文件
def save_audio_file(file_path, file_content):
    # 生成一个唯一的文件名
    unique_filename = str(uuid.uuid4()) + ".wav"

    # 确保目录存在
    if not os.path.exists(file_path):
        os.makedirs(file_path)

    try:
        # 将文件流转换为音频数据
        audio_data, sample_rate = sf.read(io.BytesIO(file_content.read()))

        # 构建完整的文件路径
        file_path_with_file_name = os.path.join(file_path, unique_filename)

        # # 重采样音频数据到16kHz,单声道,16位
        if sample_rate != 16000:
            from scipy.signal import resample
            num_samples = int(len(audio_data) * (16000 / sample_rate))
            audio_data = resample(audio_data, num_samples)
            sample_rate = 16000

        # 保存音频数据为16位,16kHz,单声道的WAV文件
        sf.write(file_path_with_file_name, audio_data, 16000, subtype='PCM_16')

        return file_path_with_file_name, sample_rate

    except Exception as e:
        print(f"Error saving file: {e}")
        return None

获取语音识别结果代码:

python 复制代码
import os
# 获取指定文件的语音识别结果
def get_text_with_asr(file_path_with_file_name, sample_rate):
    if not os.path.exists(file_path_with_file_name):
        return None
    asr_result = ASR_EXECUTOR(
        audio_file=file_path_with_file_name,
        model=ASR_MODEL,
        # sample_rate=sample_rate,
        # lang='zh'
    )
    return asr_result

音频转文字代码:

python 复制代码
import os
# 音频转文字(上传音频文件)
def audio_to_text(file_content, file_name):
    file_path_without_file_name = '.' + STATIC_FILE_PATH + "/"
    if not os.path.exists(file_path_without_file_name):
        os.makedirs(file_path_without_file_name)
    file_path_with_file_name, sample_rate = save_audio_file(file_path_without_file_name, file_content)
    asr_result = get_text_with_asr(file_path_with_file_name, sample_rate)
    return asr_result
相关推荐
工藤学编程3 小时前
零基础学AI大模型之LangChain智能体之initialize_agent开发实战
人工智能·langchain
king王一帅4 小时前
Incremark Solid 版本上线:Vue/React/Svelte/Solid 四大框架,统一体验
前端·javascript·人工智能
泰迪智能科技6 小时前
分享|职业技术培训|数字技术应用工程师快问快答
人工智能
Dxy12393102168 小时前
如何给AI提问:让机器高效理解你的需求
人工智能
少林码僧8 小时前
2.31 机器学习神器项目实战:如何在真实项目中应用XGBoost等算法
人工智能·python·算法·机器学习·ai·数据挖掘
钱彬 (Qian Bin)8 小时前
项目实践15—全球证件智能识别系统(切换为Qwen3-VL-8B-Instruct图文多模态大模型)
人工智能·算法·机器学习·多模态·全球证件识别
没学上了9 小时前
CNNMNIST
人工智能·深度学习
宝贝儿好9 小时前
【强化学习】第六章:无模型控制:在轨MC控制、在轨时序差分学习(Sarsa)、离轨学习(Q-learning)
人工智能·python·深度学习·学习·机器学习·机器人
智驱力人工智能9 小时前
守护流动的规则 基于视觉分析的穿越导流线区检测技术工程实践 交通路口导流区穿越实时预警技术 智慧交通部署指南
人工智能·opencv·安全·目标检测·计算机视觉·cnn·边缘计算
AI产品备案9 小时前
生成式人工智能大模型备案制度与发展要求
人工智能·深度学习·大模型备案·算法备案·大模型登记