使用python实现百度语音识别和图灵对话

  介绍

这篇文章运用简单易懂的例子给大家介绍使用python实现百度语音识别和图灵对话,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

图例如下

使用python实现百度语音识别和图灵对话

https://github.com/Dongvdong/python_Smartvoice

    <李>上电后,只要周围声音超过2000年开始录音5 s <李>录音上传百度识别,并返回结果文字输出李 <>李继续等待,周围声音是否超过2000年,没有就等待。 <李>点用电脑API语音交互李

代码如下

 # - * -编码:utf - 8 - *
  #树莓派
  从进口pyaudio pyaudio paInt16
  进口numpy np
  从datetime进口datetime
  进口波
  导入的时间
  库导入请求#导入请求
  进口urllib urllib。请求,pycurl
  进口base64
  进口json
  进口操作系统
  导入系统
  从加强进口重新加载
  
  #调用电脑API生成语音交互
  进口的演讲
  进口win32api
  进口操作系统
  导入系统
  导入的时间
  进口win32con
  
  
  重载(系统)
  
  #系统。setdefaultencoding (“utf-8")
  #一些全局变量
  save_count=0
  save_buffer=[]
  t=0
  和=0
  time_flag=0
  flag_num=0
  文件名=& # 39;& # 39;
  机关=& # 39;1 & # 39;
  def getHtml (url):
  html=requests.get (url)
  # html。=& # 39;编码utf - 8 # 39; #防止中文乱码
  
  返回html.text
  def get_token ():
  apiKey=癆xXDYEN27Ks9XHocsGmCEdPm"
  secretKey=?1 cd52759f4d704d91c155a22ff7183d"
  auth_url=癶ttps://openapi.baidu.com/oauth/2.0/token& # 63; grant_type=client_credentials& client_id=?+ apiKey +“, client_secret=?+ secretKey;
  res=requests.get (auth_url)
  # res。=& # 39;编码utf - 8 # 39; #防止中文乱码
  #打印(res.text)
  返回json.loads (res.text) [& # 39; access_token& # 39;】
  def dump_res (buf): #输出百度语音识别的结果
  全球机关
  #打印(“字符串类型“)
  #打印(buf)
  一个=eval (buf)
  #打印(类型(a))
  如果一个[& # 39;err_msg& # 39;]==& # 39;成功# 39;公司:
  #打印((& # 39;结果# 39;][0])#终于搞定了,在这里可以输出,返回的语句
  机关=(& # 39;结果# 39;][0]
  打印(“我:“+机关)
  def use_cloud(令牌):#进行合成
  fp=波。open (filename, & # 39; rb # 39;)
  nf=fp.getnframes ()
  f_len=nf * 2
  audio_data=https://www.yisu.com/zixun/fp.readframes (nf)
  cuid=" 9120612 " #产品id
  srv_url=' http://vop.baidu.com/server_api ' + ' & # 63; cuid=' + cuid +的令牌=+令牌
  http_header=[
  内容类型:pcm音频/;率=8000”,
  内容长度:% d % f_len
  ]
  c=pycurl.Curl ()
  c.setopt (pycurl。URL, str (srv_url)) #卷发不支持unicode
  # c.setopt (c。RETURNTRANSFER, 1)
  c.setopt (c。HTTPHEADER, http_header) #必须列表,而不是东西
  c.setopt (c。,1)
  c.setopt (c。CONNECTTIMEOUT, 30)
  c.setopt (c。超时,30)
  c.setopt (c。WRITEFUNCTION dump_res)
  c.setopt (c。POSTFIELDS audio_data)
  c.setopt (c。POSTFIELDSIZE f_len)
  # pycurl.perform c.perform()()没有返回瓦尔
  #将数据中的数据保存到名为文件名的WAV文件中
  def save_wave_file(文件名、数据):
  wf=波。open (filename,“世界银行”)
  wf.setnchannels (1)
  wf.setsampwidth (2)
  wf.setframerate (SAMPLING_RATE)
  wf.writeframes (b . join(数据))" "
  wf.close ()
  NUM_SAMPLES=2000 # pyAudio内部缓存的块的大小
  SAMPLING_RATE=8000 #取样频率
  水平=1500 #声音保存的阈值
  COUNT_NUM=20 # NUM_SAMPLES个取样之内出现COUNT_NUM个大于水平的取样则记录声音
  SAVE_LENGTH=8 #声音记录的最小长度:SAVE_LENGTH * NUM_SAMPLES个取样
  exception_on_overflow=False
  #开启声音输入pyaudio对象
  pa=PyAudio ()
  流=??格式=paInt16频道=1,率=SAMPLING_RATE、输入=True,
  frames_per_buffer=NUM_SAMPLES)
  令牌=get_token() #获取令牌
  关键=' 35 ff2856b55e4a7f9eeb86e3437e23fe '
  api=' http://www.tuling123.com/openapi/api& # 63;关键=' +键+的信息='
  而(真正的):
  #读入NUM_SAMPLES个取样
  string_audio_data=stream.read (NUM_SAMPLES、假);
  #将读入的数据转换为数组
  audio_data=np.fromstring (string_audio_data dtype=np.short)
  #计算大于水平的取样的个数
  large_sample_count=np。总和(audio_data>水平)
  temp=np.max (audio_data)
  如果临时> 2000 t==0:
  t=1 #开启录音
  打印(“- - - - - - - - - - - -主人我在听你说! (5 s) - - - - - - - - - - -”)
  开始=time.time ()
  #打印(临时)
  如果t:
  #打印(np.max (audio_data))
  如果np.max (audio_data) 

使用python实现百度语音识别和图灵对话