python--基于百度aip的语音交互及语音唤醒

这篇具有很好参考价值的文章主要介绍了python--基于百度aip的语音交互及语音唤醒。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

背景:当前随着人工智能的快速发展,人机交互的热度变得越来越大,作为人机交互的很重要的一部分-----语音交互,逐渐成为当前的热门论点。

语音交互的几大部分组成

1.获得音频文件----->2.识别音频文件----->3.将音频文件转换为字符串------>4.进行其他相关操作(打开网址,语音对话,指挥机器人.....)

准备阶段,导入相关的库

import pyaudio
import wave
from aip import AipSpeech
import time
以及百度aip注册的密钥

 1.使用pyaudio借助电脑麦克风获得音频文件

# -*- coding = utf-8
# @Time : 2022/10/2011:43
# @Author : 夜路难行
# @File : record_sound.py
# @SoftWare : PyCharm
import pyaudio
import wave

CHUNK = 1024        #wav文件会将其分成好多个数据包/数据片段
CHANNELS = 1        #声道数
FORMAT= pyaudio.paInt16   #位化深度     2^16
RATE = 16000        #采样率
RECORD_SECONDS = 4

def record_sound(FILEPATH)  :
    p = pyaudio.PyAudio()

    stream = p.open(format=FORMAT,
                    channels=CHANNELS,
                    rate=RATE,
                    input=True,
                    frames_per_buffer=CHUNK)

    print("开始录音,请说话......")

    frames = []

    for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):
        data = stream.read(CHUNK)
        frames.append(data)

    print("录音结束...")

    stream.stop_stream()
    stream.close()
    p.terminate()

    wf = wave.open(FILEPATH, 'wb')
    wf.setnchannels(CHANNELS)
    wf.setsampwidth(p.get_sample_size(FORMAT))
    wf.setframerate(RATE)
    wf.writeframes(b''.join(frames))
    wf.close()

在此需要了解相关的音频知识:

声道数:支持能发出音响的个数

采样率:一秒钟对声音的采集次数

位化深度:

   8bit (也就是1字节) 只能记录 256 个数, 也就是只能将振幅划分成 256 个等级;   

  16bit  (也就是2字节) 可以细到 65536 个数, 这已是 CD 标准了;   

  32bit (也就是4字节) 能把振幅细分到 4294967296 个等级, 实在是没必要了.

paint16,相当于2^16,把音强分为65535个等级。

比特率:每秒的传输速度,kbps == Kilobit pre seconds ,比特率 = 声道数*位化深度*采样率在百度aip的使用里面必须比特率为256kbps。

2.音频文件转化为字符串

# 读取文件
    def get_file_content(filePath):
        with open(filePath, 'rb') as fp:
            return fp.read()
    #AIP语音识别
    res = client.asr(get_file_content(FILEPATH),'wav',16000,{'dev-pid':15372,})

    #提取字符
    for key,val in res.items():
        print(key,val)
    #转化为列表
    List = res.get('result')
    #列表转化为字符串
    string = '.'.join(List)

这里是通过将百度aip转化后,返回的字典中,将键‘result’对应的值提取出来,然后将其转化为字符串。

dev-pid:对应的是不同语言的识别,这里可以去参考百度文档,找出自己需要的语言转换。

结合这两部就将语音转换完成了,后续的各项功能大家可以正常添加.....

3.语音唤醒

在网上查阅了相关资料发现,我没有找到windows系统下面的百度aip的语音唤醒,但是发现了科大讯飞的语音唤醒,但由于能力有限,目前不知道怎么将科大讯飞的语音唤醒和百度的语音交互联系起来,所以,想到了一个新的方案。

借助语音识别的功能,设置关键词,当识别到关键词的时候进行语音识别功能文章来源地址https://www.toymoban.com/news/detail-523042.html

def huanxing(FilePath):
    """ 你的 APPID AK SK """
    APP_ID = '************'
    API_KEY = '*************'
    SECRET_KEY = '********'

    client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)

    record_sound.record_sound(FilePath)

    # 读取文件
    def get_file_content(filePath):
        with open(filePath, 'rb') as fp:
            return fp.read()

    # AIP语音识别
    res = client.asr(get_file_content(FilePath), 'wav', 16000, {'dev-pid': 15372, })

    # 提取字符
    for key, val in res.items():
        print(key, val)
    # 转化为列表
    List = res.get('result')
    # 列表转化为字符串
    string = '.'.join(List)
    if string == '小黑小黑。' or string == '小黑,你好。':
        return 1
    else:
        time.sleep(2)
        print("唤醒失败...\n请重新开始语音唤醒")
        huanxing('huanxing.wav')

到了这里,关于python--基于百度aip的语音交互及语音唤醒的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Windows系统实现唤醒+合成+命令词智能语音交互

    1、之前写过离线能力调用,今天来个终极版,实现智能交互或者结合大模型的智能交互示例,下面进入正题。上B站效果离线唤醒+离线合成+离线命令词实现智能交互_哔哩哔哩_bilibili 2、到讯飞开放平台下载唤醒+合成+命令词的离线组合包,找到msc_64.dll复制三份出来,一定要注

    2024年02月16日
    浏览(55)
  • 基于百度语音识别API智能语音识别和字幕推荐系统——深度学习算法应用(含全部工程源码)+测试数据集

    本项目基于百度语音识别API,结合了语音识别、视频转换音频识别以及语句停顿分割识别等多种技术,从而实现了高效的视频字幕生成。 首先,我们采用百度语音识别API,通过对语音内容进行分析,将音频转换成文本。这个步骤使得我们能够从语音中提取出有意义的文本信息

    2024年02月13日
    浏览(57)
  • 第14章-Python-人工智能-语言识别-调用百度语音识别

            百度语音识别API是可以免费试用的,通过百度账号登录到百度智能云,在语音技术页面创建的应用,生成一个语音识别的应用,这个应用会给你一个APIKey和一个Secret Key,如图14.1所示。  我们在自己的程序中用 API Key 和 Secret Key 这两个值获取 Koken,然后再通过 Token 调

    2024年02月08日
    浏览(65)
  • python使用VOSK实现离线语音识别(中文普通话)

    目标:一个代码简单,离线,可直接使用,常用语句准确率还不错,免费的,普通话语音转文本的工具 几番对比下来,VSOK基本满足我的需求,记录一下。 环境 windows 10 / python3.8.10 s1 安装 vosk s2 下载模型 两个模型,一个很小,文件名中带有small字样,另一个就很大了,就我自

    2024年02月11日
    浏览(47)
  • 离线语音交互技术路线之语音合成(TTS)篇

      在ChatGPT大行其道之际,我心血来潮想要研究研究如何实现离线语音交互,把它和ChatGPT相结合,自己尝试实现个语音助手玩玩。本篇文章主要先从整体上分析了离线语音交互的技术实现路线,以及每个环节可能用到的参考技术,然后详细阐述了其中一个环节:语音合成(

    2024年02月09日
    浏览(50)
  • 【语音识别】落地实现--离线智能语音助手

    参考:基于python和深度学习(语音识别、NLP)实现本地离线智能语音控制终端(带聊天功能和家居控制功能) 基于V3S的语音助手(三)移植pocketsphnix唤醒 基于V3S的语音助手(二)移植pyaudio到开发板 基于V3S的语音助手(一)python3的编译和安装(该版本解决zlib readline可

    2024年03月09日
    浏览(58)
  • Unity原生语音识别/无插件/可离线/不需要联网 语音识别

    直接上代码,保证自己的设备连接了麦克风,之后把下面代码直接挂在场景的空物体上,运行即可

    2024年02月03日
    浏览(47)
  • Java 离线语音识别实现语音转文字

    model下载 我们需要实现离线语音识别,那么就得将模型下载到本地电脑。下载地址为官网的 Models 模块: https://alphacephei.com/vosk/models 我们直接找到 Chinese 分类,这里有 2 个模型 将下载的语言模型包,在下面代码中引入 代码 CommonUtils 注意:以上代码只支持.wav格式的音频文件

    2024年02月05日
    浏览(63)
  • [语音识别] 基于Python构建简易的音频录制与语音识别应用

    语音识别技术的快速发展为实现更多智能化应用提供了无限可能。本文旨在介绍一个基于Python实现的简易音频录制与语音识别应用。文章简要介绍相关技术的应用,重点放在音频录制方面,而语音识别则关注于调用相关的语音识别库。本文将首先概述一些音频基础概念,然后

    2024年02月12日
    浏览(48)
  • 开源(离线)中文语音识别ASR(语音转文本)工具整理

    开源(离线)中文语音识别ASR(语音转文本)工具整理 Open AI在2022年9月21日开源了号称其英文语音辨识能力已达到人类水准的Whisper神经网络,且它亦支持其它98种语言的自动语音辨识。 Whisper系统所提供的自动语音辨识(Automatic Speech Recognition,ASR)模型是被训练来运行语音辨识与翻

    2024年02月13日
    浏览(70)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包