语音识别人机交互功能

服务端:

from flask import Flask, request
import json
from funasr import AutoModel

app = Flask(__name__)
model = AutoModel(model=r'models/speech_seaco_paraformer_large_asr_nat-zh-cn-16k-common-vocab8404-pytorch',
                  vad_model=r'models/speech_fsmn_vad_zh-cn-16k-common-pytorch',
                  punc_model=r'models/punc_ct-transformer_zh-cn-common-vocab272727-pytorch')


@app.route('/', methods=['POST']) # 请输入用户端的url端口名称
def asr_service():
    # 初始化响应结果
    response = {'code': 0, 'message': '成功', 'data': ''}
    # 获取音频文件
    wav = request.files['wav']
    name = wav.filename
    wav.save(r'temp/temp.wav'.format(name))
    response['data'] = r'temp/temp.wav'
    # 识别音频文件
    result = model.generate(input=r'temp/temp.wav', batch_size_s=300)
    if len(result) >= 1:
        response['data'] = result[0]['text']
        print(response)
    return json.dumps(response, ensure_ascii=False)

if __name__ == '__main__':
    app.config['JSON_AS_ASCII'] = False
    app.run(host='0.0.0.0', port=5000)

客户端:

import requests  # 用于发送HTTP请求到API
import sounddevice as sd
import soundfile as sf

# 电子元器件类别

cls_names = ['电容', '电阻', 'LED', '芯片', '数码管']

def abc():


    global words
    while True:
        fs = 44100
        # 2.音频录制时长(s)
        duration = 10
        recorder = sd.rec(int(duration * fs), samplerate=fs, channels=2)
            # 提示
        print('请说话...')
        sd.wait()
            # 生成音频文件
        sf.write(r'temp/temp.wav', recorder, fs)
        url = '' #请输入自己的url

        response = requests.post(url=url,
                                     files={'wav':open(r'temp/temp.wav', 'rb')})
        result = response.json()

        if result['code'] == 0:
            words = result['data']

            # 检查是否存在模式和电子元器件
        if '实时' in words:
            mode = '实时计数'
        elif '累计' in words:
            mode = '累计计数'
        else:
            mode = ''



        if '实时' in words and '累计' in words:
            mode = ''


        component_names = []
        if mode:
            for name in cls_names:
                if name in words:
                    component_names.append(name)
        #if '全部' in words:
             #component_names = cls_names

        print('语音识别:{}'.format(words))
        print('功能模式:{}'.format(mode))
        print('识别对象:{}'.format(component_names))

abc()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值