Python中PyAudio如何实现录音自动化交互实现问答

  介绍

这篇文章将为大家详细讲解有关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函数就是我们调用的录音函数,并且给他一个文件名,他就会自动将声音写入到文件中了

<强>二。实现音频格式自动转换并调用语音识别

录音的问题解决了,赶快和百度语音识别接在一起使用一下:

 Python中PyAudio如何实现录音自动化交互实现问答

不管你的录音有多么多么清晰,你发现百度给你返回的永远是:

{& # 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如何实现录音自动化交互实现问答

Python中PyAudio如何实现录音自动化交互实现问答