第14章-Python-人工智能-语言识别-播放音频文件

本章主要介绍一部分与人工智能相关得编程实例,如车牌识别、人脸识别、语音识别和图文识别等,这些内容涉及人工智能。

        本节编程实例实现的功能是”播放音频文件“。

14.1.1 准备工作

         本节编程实例涉及录音、播放和生成wav文件等功能,所以要用pyaudio库实现音频操作的主要功能。pyaudio库是一个跨平台的音频 I/O库,在命令行终端通过pip命令安装该音频库,如下所示。

pip install pyaudio

        本节编程实例还需要以发送URL请求的方式调用百度语音识别相关的接口,这里用requests库实现该功能,主要因为requests库是Python的HTTP库,简单易用,安装命令如下所示。

pip install requests

14.1.2 音频编程基础

音频编程需要了解采样率、量化位数和声道数等概念。

采样率:录制音频时录音设备在1秒钟内对声音信号的采样次数,采样频率越高,声音还原得就越真实自然,它用于赫兹(Hz)来表示。

量化位数:表示音频每个采样用几字节表示,比如1字节是8bit,2字节是16bit。

声道数:表示声音录制时的音频数量或回放时相应的扬声器数量。

这个编程实例采用pyaudio库,本节将介绍用pyaudio库进行音频编程的二个要点,分别为音频播放与录制。

播放音频文件的代码如下所示。

# 导入音频相关模板

import pyaudio
import wave

# 音频播放函数
def play_wave():
    # 通过 wave 对象打开一个音频文件
    # test.wav 是一个测试文件,可以是任意的wav格式文件   
    wf = wave.open("test.wav",'rb')
    # 建立一个Pyaudio对象
    p=pyaudio.PyAudio()
    # 打开一个数据流对象,设置参数 output=True,
    # 可以使解码形式的音频直接通过 stream 播放出来,这样就可以听到声音  
  
 
 stream=p.open(format=p.get_format_from_width(wf.getsampwidth()),
channels=wf.getnchannels(),rate=wf.getframerate(),output=True)
    # 播放音频,使用 while 循环连续读取音频帧并播放
    while True:
        oneframe=wf.readframes(1024)
        if oneframe ==b'':
            break
        stream.write(oneframe)
    stream.close()
    p.terminate()
    print('播放结束')

# 调用播放函数
play_wave()

(1)代码开头导入pyaudio库模块,因为程序需要使用该库的 PyAudio 对象进行相关操作。在play_wave()函数中利用 PyAudio 对象生成一个音频数据流对象,并设置这个数据流对象参数output=True,实现了音频播放功能。这里对音频数据流参数进行简单说明,参数output用来指定数据流模式是录音还是播音,当设置参数 output=True 可用于音频播放,设置参数 input=True时可用于录音;参数format用来设置音频的量化位数; channels 用来设置声道数; rate用来设置音频的采样率;这些参数可以从打开的 wave 文件中取得,如        stream=p.open(format=p.get_format_from_width(wf.getsampwidth()),
channels=wf.getnchannels(),rate=wf.getframerate(),output=True) 语句中分别从文件取得音频的量化位数、声道数和音频采样率。

(2)代码导入wave 模块

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lijun_xiao2009

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值