最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python 實(shí)現(xiàn)語(yǔ)音聊天機(jī)器人的示例代碼

 更新時(shí)間:2018年12月02日 10:14:59   作者:氫立方  
這篇文章主要介紹了python 實(shí)現(xiàn)語(yǔ)音聊天機(jī)器人的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

前言

在不遠(yuǎn)的將來(lái),實(shí)現(xiàn)一定程度上的語(yǔ)音支持將成為日??萍嫉幕疽?,整合了語(yǔ)音識(shí)別的python程序提供了其他技術(shù)無(wú)法比擬的交互性和可訪問(wèn)性。最重要的是,在python程序中實(shí)現(xiàn)語(yǔ)音識(shí)別非常簡(jiǎn)單。整個(gè)代碼實(shí)現(xiàn)下來(lái)還不到150行。

原理簡(jiǎn)介

許多現(xiàn)代語(yǔ)音識(shí)別系統(tǒng)會(huì)在HMM識(shí)別之前使用神經(jīng)網(wǎng)絡(luò),通過(guò)特征變換和降維技術(shù)來(lái)簡(jiǎn)化語(yǔ)音信號(hào),也可以使用語(yǔ)音活動(dòng)檢測(cè)器將音頻信號(hào)減少到可能包含語(yǔ)音的部分。

幸運(yùn)的是,對(duì)于python來(lái)講,一些語(yǔ)音識(shí)別的服務(wù)可通過(guò)API在線使用,且其中大部分也提供了Python SDK。

本文做的聊天機(jī)器人是基于百度語(yǔ)音識(shí)別和圖靈機(jī)器人二者之上共同實(shí)現(xiàn)的。大致的流程如下圖:

原理流程圖.PNG

這里需要用的模塊庫(kù)有 requests、time、datetime、pyaudio、wave、aipspeech 等。

話不多說(shuō),上代碼:

##@氫立方 2018.0911

import requests
import time
import pygame
from datetime import datetime
from aip import AipSpeech
from pyaudio import PyAudio,paInt16
import wave
import os


framerate=8000
NUM_SAMPLES=2000
channels=1
sampwidth=2
TIME=2


def save_wave_file(filename,data):
  '''save the date to the wavfile'''
  wf=wave.open(filename,'wb')
  wf.setnchannels(channels)
  wf.setsampwidth(sampwidth)
  wf.setframerate(framerate)
  wf.writeframes(b"".join(data))
  wf.close()


def my_record():
  pa=PyAudio()
  stream=pa.open(format = paInt16,channels=1,
          rate=framerate,input=True,
          frames_per_buffer=NUM_SAMPLES)
  my_buf=[]
  count=0
  while count<TIME*6:#控制錄音時(shí)間
    string_audio_data = stream.read(NUM_SAMPLES)
    my_buf.append(string_audio_data)
    count+=1
    print('.')
  save_wave_file('0001.wav',my_buf)
  stream.close()

##def play():
##  wf=wave.open(r"D:/41125.mp3",'rb')
##  p=PyAudio()
##  stream=p.open(format=p.get_format_from_width(wf.getsampwidth()),channels=
##  wf.getnchannels(),rate=wf.getframerate(),output=True)
##  while True:
##    data=wf.readframes(chunk)
##    if data=="":break
##    stream.write(data)
##  stream.close()
##  p.terminate()
##

這里大家需要改成自己的ID和KEY


APP_ID = '11****843'
API_KEY = '3Mnv***8**88******GbXa'

SECRET_KEY = '147***8*88****1227684'
aipSpeech = AipSpeech(APP_ID, API_KEY, SECRET_KEY)




def getText(url):
  text = requests.post(url).json()
  return text['text']



##
##key = '6ddc57c5761a4c62a30ea840e5ae163f'
#api = 'http://www.tuling123.com/openapi/api?key=' + key +'&info ='
key = '8b005db5f57556fb96dfd98fbccfab84' 
api = 'http://www.tuling123.com/openapi/api?key=' + key + '&info=' 
##
while True:
  
##  info = input("我說(shuō)\n")

 
##  chunk=2014

  my_record()
  print("錄音完成")
  

  
  def get_file_content(filePath):
    with open(filePath,'rb') as fp:
      return fp.read()
    
  a = aipSpeech.asr(get_file_content('0001.wav '),'wav',8000,{})
  print(a)
  b = str(a['result'])
  info = b

  
  url = api + info
  #print(url)

  text_01 = getText(url)
  print("機(jī)器人回\n",text_01)

  now = datetime.now().strftime("%Y-%m-%d_%H_%M_%S")
  filename_01 = now + ".mp3"

  result = aipSpeech.synthesis(  text_01,'zh',1,{'vol': 5,'per' : 2} )
  
  if not isinstance(result, dict):
    
    with open(filename_01, 'wb') as f:
      f.write(result)
  print("--------------------------------------")
  time.sleep(1)
  
  
  pygame.mixer.init()
  print("語(yǔ)音1")
  file= filename_01
  track = pygame.mixer.music.load(file)

  pygame.mixer.music.play()
  time.sleep(15)
  pygame.mixer.music.stop()
  pygame.quit()

運(yùn)行結(jié)果如下:

小編說(shuō)的是:今天看了電視劇。機(jī)器人回復(fù)的是:看了有沒(méi)有開(kāi)心點(diǎn)

在某種意義上來(lái)說(shuō),語(yǔ)境還是符合常理的。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

诏安县| 五指山市| 什邡市| 增城市| 平乐县| 池州市| 博野县| 抚州市| 宁城县| 韶山市| 兴仁县| 磴口县| 南阳市| 双柏县| 新巴尔虎右旗| 乌什县| 定日县| 辽中县| 南丰县| 铜鼓县| 屯昌县| 武山县| 延寿县| 葫芦岛市| 上林县| 开平市| 深圳市| 夏邑县| 渑池县| 郯城县| 炉霍县| 兴业县| 东乡| 鹿泉市| 昌江| 霸州市| 车险| 苍溪县| 洪湖市| 忻城县| 福清市|