介绍
这篇文章将为大家详细讲解有关Python中PyAudio如何实现录音自动化交互实现问答,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
首先要先皮普一个PyAudio
<代码> pip安装PyAudio 代码>
<强>一。PyAudio实现麦克风录音强>
然后建立一个py文件,复制如下代码
import PyAudio import 波 CHUNK =1024 FORMAT =pyaudio.paInt16 时间=CHANNELS 2 RATE =16000 时间=RECORD_SECONDS 2 时间=WAVE_OUTPUT_FILENAME “Oldboy.wav" 时间=p pyaudio.PyAudio ()==stream p.open(格式格式, ,,,=渠道,渠道 ,,,率=率, ,,,输入=True, ,,,frames_per_buffer=块) print(“开始录音,请说话…“) 时间=frames [] for 小姐:拷贝范围(0,,int(时间/RATE CHUNK *, RECORD_SECONDS)):=,,data  stream.read(块) ,frames.append(数据) print(“录音结束,请闭嘴!“) stream.stop_stream () stream.close () p.terminate () 时间=wf wave.open (WAVE_OUTPUT_FILENAME, & # 39; wb # 39;) wf.setnchannels(渠道) wf.setsampwidth (p.get_sample_size(格式) wf.setframerate(率) wf.writeframes (b # 39; & # 39; . join(帧)) wf.close ()
尝试一下,在目录中出现了一个<代码>卑劣。wav 代码>文件,听一听,还是很清晰的嘛
接下来,我们将这段录音代码,写在一个函数里面,如果要录音的话就调用
建立一个文件pyrec。py并将录音代码和函数写在内
#, pyrec.py 文件内容 import pyaudio import 波 CHUNK =1024 FORMAT =pyaudio.paInt16 时间=CHANNELS 2 RATE =16000 时间=RECORD_SECONDS 2 def 矩形(file_name):=,,p  pyaudio.PyAudio ()=,,stream  p.open(格式=格式, ,,,,=渠道,渠道 ,,,,率=率, ,,,,输入=True, ,,,,frames_per_buffer=块) ,打印(“开始录音,请说话…“)=,frames [] ,for 小姐:拷贝范围(0,,int(时间/RATE CHUNK *, RECORD_SECONDS)): 时间=data 才能;stream.read(块) frames.append才能(数据) ,打印(“录音结束,请闭嘴!“) ,stream.stop_stream () ,stream.close () ,p.terminate ()=,,wf  wave.open (file_name, & # 39; wb # 39;) ,wf.setnchannels(渠道) ,wf.setsampwidth (p.get_sample_size(格式) ,wf.setframerate(率) ,wf.writeframes (b # 39; & # 39; . join(帧)) 之前,wf.close () >rec函数就是我们调用的录音函数,并且给他一个文件名,他就会自动将声音写入到文件中了
<强>二。实现音频格式自动转换并调用语音识别强>
录音的问题解决了,赶快和百度语音识别接在一起使用一下:
不管你的录音有多么多么清晰,你发现百度给你返回的永远是:
{& # 39; err_msg& # 39;:, & # 39; speech quality 错误强生# 39;,,& # 39;err_no& # 39;:, 3301年,& # 39;sn # 39;:, & # 39; 6397933501529645284 & # 39;}, #,音质不清晰其实不是没听清,而是百度支持的音频格式PCM搞的鬼
所以,我们要将录制的wav音频文件转换为PCM文件
写一个文件<代码> wav2pcm。py 代码>这个文件里面的函数是专门为我们转换wav文件的
使用os模块中的<代码> os.system() 代码>方法这个方法是执行系统命令用的,在windows系统中的命令就是cmd里面写的东西,dir, cd这类的命令
#, wav2pcm.py 文件内容 import 操作系统 def wav_to_pcm (wav_file): ,#假设,wav_file =,“音频文件.wav" ,# wav_file.split(“!”),得到(“音频文件“,“wav"],拿出第一个结果“音频文件,,与,“.pcm",拼接,等到结果,“音频文件.pcm"=,pcm_file “% s.pcm", % (wav_file.split (“!”) [0]) ,#就是此前我们在cmd窗口中输入命令,这里面就是在让Python帮我们在cmd中执行命令 ,os.system (“ffmpeg  -y 小姐;% s -acodec pcm_s16le -f s16le -ac 1, -ar 16000, % s" % (wav_file pcm_file)) ,return pcm_file这样我们就有了把wav转为pcm的函数了,再重新构建一次咱们的代码
Python中PyAudio如何实现录音自动化交互实现问答