dome 模块 pyaudio 声音处理

为语音识别准备

直接上例子

dome1 声音强度检查

import pyaudio
import numpy as np class QAudio: CHUNK = 512
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 48000 def __init__(self):
self.paudio = None
self.stream = None def open(self): self.paudio = pyaudio.PyAudio()
self.stream = self.paudio.open(format=self.FORMAT,
channels=self.CHANNELS,
rate=self.RATE,
input=True,
frames_per_buffer=self.CHUNK) def read(self):
data = self.stream.read(self.CHUNK)
return data def close(self):
self.stream.close()
self.paudio.terminate() def main():
a = QAudio()
a.open()
print("开始聆听...")
while True:
data = a.read()
audio_data = np.fromstring(data, dtype=np.short)
temp = np.max(audio_data)
print(f'当前声音强度值: {"*"*(temp//100)}') if __name__ == '__main__':
main()

dome2 录音_播放_写到文件

import pyaudio
import wave class QAudio: CHUNK = 512
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 48000 def __init__(self):
self.paudio = None
self.stream = None def open(self): self.paudio = pyaudio.PyAudio()
self.stream = self.paudio.open(format=self.FORMAT,
channels=self.CHANNELS,
rate=self.RATE,
input=True,
frames_per_buffer=self.CHUNK) def read(self):
data = self.stream.read(self.CHUNK)
return data def read_s(self, time=1):
data = []
for _ in range(self.RATE//self.CHUNK*time):
data.append(self.stream.read(self.CHUNK)) return data def close(self):
self.stream.close()
self.paudio.terminate() def save(self, filename='tmp.wav', data=[]):
wf = wave.open(filename, "wb")
wf.setnchannels(self.CHANNELS)
wf.setsampwidth(2)
wf.setframerate(self.RATE)
wf.writeframes(b"".join(data))
wf.close() def play(self, path="tmp.wav"):
# 定义数据流块
chunk = 1024
# 只读方式打开wav文件
f = wave.open(path, "rb")
# 打开数据流
fstream = self.paudio.open(format=self.paudio.get_format_from_width(f.getsampwidth()),
channels=f.getnchannels(),
rate=f.getframerate(),
output=True)
# 读取数据
data = f.readframes(chunk)
# 播放
while data:
fstream.write(data)
data = f.readframes(chunk)
# 停止数据流
fstream.stop_stream()
fstream.close() def main():
a = QAudio()
a.open() print('开始录音')
data = a.read_s(10)
print('保存录音')
a.save(data=data)
print('播放声音')
a.play()
a.close() if __name__ == '__main__':
main()

dome3 自动断句录音,你说啥我说啥

为语音识别准备

import pyaudio
import wave
import numpy as np class QAudio: CHUNK = 512
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 48000 def __init__(self):
self.paudio = None
self.stream = None def open(self): self.paudio = pyaudio.PyAudio()
self.stream = self.paudio.open(format=self.FORMAT,
channels=self.CHANNELS,
rate=self.RATE,
input=True,
frames_per_buffer=self.CHUNK) def read(self):
data = self.stream.read(self.CHUNK)
return data def read_s(self, time=1.0):
data = []
for _ in range(int(self.RATE//self.CHUNK*time)):
data.append(self.stream.read(self.CHUNK)) return data def close(self):
self.stream.close()
self.paudio.terminate() def save(self, filename='tmp.wav', data=[]):
wf = wave.open(filename, "wb")
wf.setnchannels(self.CHANNELS)
wf.setsampwidth(2)
wf.setframerate(self.RATE)
wf.writeframes(b"".join(data))
wf.close() def play(self, path="tmp.wav"):
# 定义数据流块
chunk = 1024
# 只读方式打开wav文件
f = wave.open(path, "rb")
# 打开数据流
fstream = self.paudio.open(format=self.paudio.get_format_from_width(f.getsampwidth()),
channels=f.getnchannels(),
rate=f.getframerate(),
output=True)
# 读取数据
data = f.readframes(chunk)
# 播放
while data:
fstream.write(data)
data = f.readframes(chunk)
# 停止数据流
fstream.stop_stream()
fstream.close() def read_auto(self): self.read_s(0.1) # 先取0.1s,清一下buf
while True:
data = []
flag = None
count = 1
while True:
result = self.read()
audio_data = np.fromstring(result, dtype=np.short)
# audio_data = np.array(result)
temp = np.max(audio_data)
print(f'当前声音强度值: {"*" * (temp // 100)}')
if temp < 400:
if flag:
count -= 1
if count < 0:
break
continue
else:
flag = True
data.append(result)
print(len(data))
if len(data) > (self.RATE//self.CHUNK)//3:
break return data def main():
a = QAudio()
a.open()
while True:
print('开始录音')
data = a.read_auto()
print('保存录音')
a.save(data=data)
print('播放声音')
a.play() # 清空buff 避免噪音回响
a.read_s(len(data)//(a.RATE//a.CHUNK)+0.5) if __name__ == '__main__':
main()

dome 模块 pyaudio 声音处理 为语音识别准备的更多相关文章

  1. Unity 声音处理 之 语音识别

    音量检测 检测当前麦克风的输入音量 using System.Collections; using System.Collections.Generic; using UnityEngine; usi ...

  2. 基于语音识别、音文同步、图像OCR的字幕解决方案HtwMedia介绍

    背景介绍 俗话说,“好记性不如乱笔头”,这充分说明了文字归档的重要性.如今随着微信.抖音等移动端app的使用越来越广,人们生产音.视频内容也越来越便捷.而相比语音和视频而言,文字具有易存档.易检索.易 ...

  3. 关于编码和解码问题——encode、decode

            一.背景和问题 近期在做一个关于声卡录音的项目,开发环境是win10 64位家庭中文版,pycharm2019.1,python3.6(Anaconda3),python模块pyaud ...

  4. webrtc中APM(AudioProcessing module)的使用

    一,实例化和配置 AudioProcessing* apm = AudioProcessing::Create(0); //这里的0指的是channelID,只是一个标注那个通道的表示 apm-> ...

  5. AngularJs angular.injector、angular.module

    angular.injector 创建一个injector对象, 调用injector对象的方法可用于获取服务以及依赖注入. 格式:angular.injector(modules); modules ...

  6. webrtc--AudioProcessing的使用

    1.AudioProcessing的实例化和配置: AudioProcessing* apm = AudioProcessing::Create(0); apm->level_estimator ...

  7. LINUX下 Udev详解

    如果你使用Linux比较长时间了,那你就知道,在对待设备文件这块,Linux改变了几次策略.在Linux早期,设备文件仅仅是是一些带有适当的属性集的普通文件,它由mknod命令创建,文件存放在/dev ...

  8. 【Cocos2d-X开发笔记】第一期 Cocos2d-X的环境搭建

          作者今天开始正式开始学习Cocos2d-X引擎进行游戏编程,预计两天会更新一期,最后实现ios游戏的appsore上线. (部分内容转载自:http://blog.csdn.net/yan ...

  9. 【Cocos2d-X开发学习笔记】第01期:PC开发环境的详细搭建

    本文使用的是cocos2d-x-2.1.4版本 ,截至目前为止是最新稳定版 所谓的开发环境就是制作游戏的地方,打个比方读者就会十分清楚了.比如提到做饭,人们都会想到厨房.这是 因为厨房有炉灶.烟机.水 ...

随机推荐

  1. boostrap3 bootstrap-datetimepicker.min.js设置中文语言

    问题 bootstrap3中使用bootstrap-datetimepicker遇到设置中文语言的问题 解决办法 bootstrap-datetimepicker在使用的时候要先引入momentjs中 ...

  2. java异常和throw和throws的区别

    之前在编程中编译完成后,运行时,会遇见一些常见的错误,如NullPointerException,ArrayIndexOutOfBoundsException等等 在今天重新回顾学习了java异常,总 ...

  3. Nginx之负载均衡配置(一)

    前文我们聊了下nginx作为反向代理服务器,代理后端动态应用服务器的配置,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/12430543.html:今天我们来聊 ...

  4. java中的对象 方法 引用 等一些抽象的概念是什么意思呢?

    2020-03-14 最近这一段时间有点忙,好久都没有更新博客了,之后我会一直坚持下去的,和大家一同进步的. 这段时间一直在学java,相信刚开始学习java的小白,刚开始接触那么些抽象的概念一定和我 ...

  5. 【摩天大楼平地起】基础篇 09 简述N种查找算法

    引言 在开始之前首先可以先思考一下假如没有查找算法会是什么情况?所有数据结构都需要全部遍历一遍,每次都一遍又一遍的查,从本质而言查找算法就是为了提高效率. 经过前人一代又一代的努力,目前的查找算法大致 ...

  6. Block详解一(底层分析)

    本篇博客不再讲述Block的基本定义使用,最近而是看了很多的block博客讲述的太乱太杂,所以抽出时间整理下block的相关底层知识,在讲述之前,提出几个问题,如果都可以回答出来以及知道原理,大神绕过 ...

  7. 结题报告--hih0CoderP1041

    题目:点此 描述 小Hi和小Ho准备国庆期间去A国旅游.A国的城际交通比较有特色:它共有n座城市(编号1-n):城市之间恰好有n-1条公路相连,形成一个树形公路网.小Hi计划从A国首都(1号城市)出发 ...

  8. Js中的window.parent ,window.top,window.self 了解

    在应用有frameset或者iframe的页面时,parent是父窗口,top是最顶级父窗口(有的窗口中套了好几层frameset或者iframe),self是当前窗口, opener是用open方法 ...

  9. javascript中怎么判断两个数据类型相等

    在 JavaScript 中,判断一个变量的类型尝尝会用 typeof 运算符,在使用 typeof 运算符时采用引用类型存储值会出现一个问题,无论引用的是什么类型的对象,它都返回 "obj ...

  10. JetBrains Quest 3

    起因 今天早上看了一篇博文: 此时的我:"哎,这等好事不等我!" 然后......我打开官方推特: "什么?最后的任务?" 于是就有了这篇文章 开始操作 1.神 ...