当前位置: 首页 > news >正文

怎么设置网站支付功能图片展示网站

怎么设置网站支付功能,图片展示网站,百度搜索简洁版网址,wordpress插件免费分享前言 结合前段时间我们做的音频编解码器#xff0c;这样我们就可以将获取到的ADPCM数据#xff0c;转换成PCM数据#xff0c;然后播放出来#xff0c;得到一个完整的音频数据#xff0c;因此#xff0c;接下来几篇文章中#xff0c;我们想做一个播放PCM格式的音频播放器…前言 结合前段时间我们做的音频编解码器这样我们就可以将获取到的ADPCM数据转换成PCM数据然后播放出来得到一个完整的音频数据因此接下来几篇文章中我们想做一个播放PCM格式的音频播放器。待到音频编解码器完成播放器完成或许我们就能做一个语音识别功能模块通过一个小收音器的BLE蓝牙连接连接到电脑上实时完成音频传输解码以及识别的整套流程。可以完成语音写入文本不仅彻底解放双手还能解放双脚让你离开电脑桌也能输入文本不过也是作者的美好幻想 先挖个坑距离实现遥遥无期尽请期待 在此之前呢我们先脚踏实地的了解一下我们必要的第三方库PyAudio。 前置知识 在介绍PyAudio库之前我们需要先了解一点点前置内容 采样率采样率是指机器每秒采样的次数是音频处理中的重要参数。如采样率为44100即1秒钟采样44100次常见的采样率为44100、48000在小型设备中如只专注语音的识别不在乎音质通常会选用更小的采样率如8000、16000等换取硬件设备的成本优势音频格式指的是每个采样点的长度如paInt16表示每个采样点为16比特一次采样获取的数据为16比特常见的采样点大小为8、16、32等。单位为比特。通常采样率与采样点大小即可确定一定时间内采样获取的数据大小如当音频格式为paInt16采样率为8KHz那么1s中将采样到 8000 * 16bit 128kb的数据。通道指的是声道麦克风拾音的过程。分为单声道多声道立体声联合立体声等。块块是指数据块在PyAudio可以实时处理动态音频数据也就是音频流而处理音频流实际上也是将连续的实际上并非连续输入以数据块的形式处理并不是来一个字节处理一个字节可以理解为缓冲区buffer的概念。 稍稍理解这些概念以便后续阅读中看懂PyAudio的参数如果没懂可以返回来反复阅读。 PyAudio PyAudio 是一个用于在 Python 中进行音频处理的库它为我们提供了跨平台的接口用于录音、播放和处理音频流。PyAudio 封装了 PortAudio 库PortAudio 是一个跨平台的音频库支持多种操作系统如 Windows、macOS、Linux。 PyAudio的常见用途 录音Recording Audio可以从麦克风获取音频数据。播放音频Playing Audio可以播放 WAV 或其他格式的音频文件。实时音频处理处理音频数据流例如分析麦克风输入实时音效等。 安装 PyAudio 首先需要安装 PyAudio。可以使用 pip 来安装 pip install pyaudioPyAudio的核心概念 流Stream PyAudio 的核心概念是“流”Stream。流是数据的一个持续流动的通道用于音频输入或输出。你可以创建一个输入流录音或输出流播放音频然后使用流来传输音频数据。音频格式和数据 PyAudio 支持多种音频格式例如 paInt1616 位整数格式和 paFloat3232 位浮点格式。音频数据通常是原始的字节流数据可以通过 NumPy 数组或其他方式进行处理。回调函数 在实时音频流的场景中通常使用回调函数来处理音频数据。回调函数会在每次采集到一块音频数据时被调用。 主要功能 录音示例 以下是一个使用 PyAudio 录音的简单示例 import pyaudio import wave# 设置录音参数 FORMAT pyaudio.paInt16 # 音频格式 CHANNELS 1 # 单声道 RATE 44100 # 采样率 CHUNK 1024 # 每次读取的数据块大小 RECORD_SECONDS 5 # 录音时长 OUTPUT_FILENAME output.wav # 输出文件p pyaudio.PyAudio()# 开启输入流 stream p.open(formatFORMAT,channelsCHANNELS,rateRATE,inputTrue,frames_per_bufferCHUNK)print(开始录音...)frames []# 录制数据 for _ in range(0, int(RATE * RECORD_SECONDS / CHUNK)):data stream.read(CHUNK)frames.append(data)print(录音结束...)# 停止流并关闭 stream.stop_stream() stream.close() p.terminate()# 将录音保存为WAV文件 wf wave.open(OUTPUT_FILENAME, wb) wf.setnchannels(CHANNELS) wf.setsampwidth(p.get_sample_size(FORMAT)) wf.setframerate(RATE) wf.writeframes(b.join(frames)) wf.close()这里有值得一提的一个点 # 录制数据 for _ in range(0, int(RATE * RECORD_SECONDS / CHUNK)):data stream.read(CHUNK)frames.append(data)这个循环的主要目的是从流中读取数据并添加到frams列表中可以看到RATE * RECORD_SECONDS为采样率 * 录音时长这可以得到在本次录音中一共采样的次数/ CHUNK表明采样的数据被分块读取并写入frames。这里其实隐式的处理了采样格式即paInt16。 播放音频示例 以下是一个播放 WAV 文件的简单示例 import pyaudio import wave# 打开WAV文件 wf wave.open(output.wav, rb)p pyaudio.PyAudio()# 打开输出流 stream p.open(formatpyaudio.paInt16,channelswf.getnchannels(),ratewf.getframerate(),outputTrue)# 读取文件并播放 chunk 1024 data wf.readframes(chunk) while data:stream.write(data)data wf.readframes(chunk)# 关闭流 stream.stop_stream() stream.close() p.terminate()PyAudio的高级功能 回调模式Callback Mode PyAudio 提供了回调模式来处理音频流。在这种模式下你可以通过定义回调函数来实时处理录制或播放的音频数据。例如你可以实时对音频数据进行处理或应用某些效果如滤波、增益等。 示例 import pyaudiodef callback(in_data, frame_count, time_info, status):# 处理音频数据print(Recording...)return (in_data, pyaudio.paContinue)p pyaudio.PyAudio()# 打开输入流 stream p.open(formatpyaudio.paInt16,channels1,rate44100,inputTrue,frames_per_buffer1024,stream_callbackcallback)stream.start_stream()# 等待流结束 while stream.is_active():passstream.stop_stream() stream.close() p.terminate()PyAudio的应用场景 音频录制与播放用来创建简单的音频应用程序进行声音的录制和回放。语音识别结合其他语音识别库如 speech_recognition可以实现语音识别功能。实时音频处理可以实时分析、修改或增强音频数据。声音特效处理可以在录制或播放过程中加入音效如回声、变调等。 PyAudio与其他音频库对比 vs. wave: wave 模块主要用于处理静态的音频文件而 PyAudio 支持音频流能够进行实时录音与播放。vs. soundfile: soundfile 更适用于处理已保存的音频文件的读写操作而 PyAudio 更擅长实时音频流的处理。 注意事项 在不同平台上安装 PyAudio 可能需要额外的步骤。例如Windows 上可能需要安装 PortAudio 的依赖项。PyAudio 并不支持直接播放 MP3 等压缩音频格式。如果需要播放其他格式的音频可能需要使用其他库如 pygame 或 pydub。 小结 总的来说PyAudio 是一个非常强大的库适合用于音频处理和实时音频应用尤其在需要直接与麦克风或扬声器交互时提供了非常简洁的接口。 stop_stream与start_stream 可能会有同学好奇在上面的示例代码中为什么只看见stream.stop_stream而没有看见stream.start_stream呢如果只有停止流的操作为什么没有开启流的操作流在哪里被开启了呢 PyAudio 中的 stream.start_stream() 和 stream.stop_stream() 是两个重要的流控制方法用于控制音频流的开始和停止。 在 PyAudio 的流Stream中start_stream() 和 stop_stream() 方法实际上是可选的它们的行为是与音频流的实际使用场景有关的。让我们详细解释一下这两个方法以及为什么在某些情况下可能看不到显式调用 start_stream()。 1. stream.start_stream() 的作用 start_stream() 方法用于启动音频流开始录制或播放音频。它是用来显式告诉程序 “现在开始处理音频数据”。 2. stream.stop_stream() 的作用 stop_stream() 方法用于停止音频流表示录制或播放过程结束。这对于需要显式控制音频流的结束时机的程序非常有用。 为什么 start_stream() 有时没被显式调用 回调模式Callback Mode 如果使用了回调模式即通过设置 stream_callback 参数来传递回调函数那么在调用 open() 方法时音频流已经自动开始了。回调机制会在后台处理音频数据的输入和输出。因此在这种模式下start_stream() 是不必要的因为流会自动启动。 例如 import pyaudiodef callback(in_data, frame_count, time_info, status):# 处理音频数据print(Recording...)return (in_data, pyaudio.paContinue)p pyaudio.PyAudio()# 打开输入流并设置回调函数 stream p.open(formatpyaudio.paInt16,channels1,rate44100,inputTrue,frames_per_buffer1024,stream_callbackcallback)# 注意: 这里不需要显式调用 start_stream() stream.start_stream() # 这行可以省略回调模式会自动启动# 等待流结束 while stream.is_active():passstream.stop_stream() stream.close() p.terminate()在这个例子中start_stream() 虽然可以显式调用但在使用回调模式时可以省略因为 PyAudio 会在底层自动处理流的启动和停止。 默认自动启动在非回调模式下 在非回调模式例如通过 stream.read() 或 stream.write() 进行音频数据的读取和写入中start_stream() 也是隐式调用的。在创建音频流时open() 方法会自动启动流并开始数据的录制或播放。 import pyaudiop pyaudio.PyAudio()# 设置流参数 stream p.open(formatpyaudio.paInt16,channels1,rate44100,inputTrue,frames_per_buffer1024)# 此时流已经自动启动 data stream.read(1024) # 录音 stream.stop_stream() stream.close() p.terminate()在这个例子中open() 已经自动启动了流调用 stream.read() 只是触发音频数据的读取过程而不需要显式调用 start_stream()。 小结 回调模式当你使用回调函数时PyAudio 会自动管理音频流的开始和停止。因此通常不需要显式调用 start_stream()而只需要设置 stream_callback 并开始流的处理。非回调模式即便是非回调模式open() 方法有时也会自动开始音频流尤其是在调用 stream.read() 或 stream.write() 时不需要显式调用 start_stream()。 但是在一些场景下尤其是自定义更复杂的音频控制时start_stream() 和 stop_stream() 还是很有用的特别是当你需要手动控制音频流的启动与停止时。 谁开启的麦克风或扬声器 在上面的示例代码中敏锐的读者可能会发现似乎没有发现那里调用了麦克风或扬声器合理猜测直接告诉我们应该是PyAudio库调用了硬件设备但真是如此吗如果是那么又是怎么调用的呢 我们以上面的代码为例究竟是谁调用了麦克风开启了录音 音频的录制是通过 pyaudio 库来实现的调用麦克风硬件的部分是由 pyaudio 库中的 PyAudio 类和它的 open() 方法来完成的。具体的过程是这样的 调用麦克风硬件的关键步骤 pyaudio.PyAudio(): 这个步骤创建了一个 PyAudio 对象。这个对象是与音频硬件交互的主要接口它会管理音频流包括录音流和播放流并负责配置音频设备。 p.open(): open() 方法是用来打开一个音频流的这个流可以是输入流例如录音或者输出流例如播放音频。在上面的代码中p.open() 被用来打开一个输入流用于录制音频。 stream p.open(formatFORMAT,channelsCHANNELS,rateRATE,inputTrue,frames_per_bufferCHUNK)关键参数 formatFORMAT指定音频数据的格式通常为 16 位 PCM 编码pyaudio.paInt16。channelsCHANNELS指定录音的通道数1 表示单声道2 表示立体声。rateRATE指定采样率通常选择 44100 Hz这是 CD 音质的标准采样率。inputTrue这告诉 pyaudio 创建一个输入流也就是通过麦克风录音。如果将其设置为 False则会创建输出流用于播放音频。frames_per_bufferCHUNK指定每次读取的音频块的大小通常是 1024 或 2048。 此时pyaudio 会通过系统的音频接口与麦克风硬件进行连接并开始接收音频数据。具体而言pyaudio 会通过操作系统调用音频驱动程序来访问麦克风硬件。操作系统如 Windows、Linux、macOS会提供接口给 pyaudio 来处理与硬件的交互。 stream.read(CHUNK): stream.read(CHUNK) 方法是用来从音频流中读取音频数据的。这里的 CHUNK 表示每次读取的音频数据的大小也就是说它会以一定的时间间隔根据 CHUNK 的大小从麦克风捕捉音频数据。 通过连续调用 stream.read()程序不断地从麦克风获取音频数据并将这些数据存储到 frames 列表中。 总结 谁调用了麦克风硬件 实际上是 pyaudio 库调用了麦克风硬件。pyaudio 作为一个高层的音频处理库封装了与操作系统音频接口的交互。操作系统的音频驱动程序在幕后管理与麦克风硬件的连接和数据传输。如何调用的 通过 pyaudio.PyAudio() 创建的 PyAudio 实例。使用 p.open() 方法创建音频输入流inputTrue并通过该流接收来自麦克风的音频数据。最终使用 stream.read() 不断地从麦克风获取音频样本。 这样pyaudio 库就可以通过操作系统和驱动程序控制麦克风硬件进行录音了。
http://www.dnsts.com.cn/news/100909.html

相关文章:

  • 中国有哪些网站可以做兼职餐馆网站怎么做
  • 以橙色为主的网站微信小商店官网入口
  • wordpress网站数据迁移大连企业网站建设定制
  • 辽宁响应式网站建设哪家好企业网站建设公司多米
  • 学校网站制作多少钱乐陵森林
  • flash开发网站学校网站素材
  • wordpress博客打开慢手机优化设置
  • 网站安全建设总结报告益阳网络推广
  • 给我一个可以在线观看的懂得淄博网站优化资讯
  • 最专业微网站首选公司广西建设工程质量安全监督总站网站
  • 移动网站建设公司网站推广
  • 怎么学做电子商务网站做设计太依赖网站素材
  • 郑州seo网站管理网站用户体验方案
  • 网站数据diy科技制作网站
  • 网站建设应遵守的原则西安房产网58
  • 深圳中瑞建设集团官方网站贵州做网站公司
  • 网站建设业务范围网站服务是什么
  • 招聘网站建设人员有深度网站
  • 佛山企业网站设计制作用名字做壁纸网站
  • 郑州网站建设(智巢)wordpress分享qq插件下载
  • 开淘宝的店铺网站怎么做查域名备案
  • 成都分销商城网站建设wordpress的意思和读音
  • 南京英文网站建设中国互联网十大巨头公司
  • 做网站前台用什么问题wordpress做首页
  • 哪个网站ppt模板免费下载京东网站建设的意义
  • 十年前网站开发语言韩式风格的网页设计欣赏
  • 三门峡住房城乡建设局网站wordpress模板怎么添加菜单
  • wordpress查看站点企业宣传册版式设计
  • 音响网站模板往国外卖货的平台
  • 推广网站哪家做的好五金店网站模板