python语音机器人查询地图_[宜配屋]听图阁

本文介绍了如何使用Python结合百度语音识别和图灵机器人API创建一个语音查询系统。通过Python的PyAudio库录制声音,AipSpeech进行语音识别,然后将识别的文本传递给图灵机器人获取回复,最后合成语音播放。文章详细展示了实现过程及关键代码,实现了人机语音交互的基础功能。
摘要由CSDN通过智能技术生成

前言

在不远的将来,实现一定程度上的语音支持将成为日常科技的基本要求,整合了语音识别的python程序提供了其他技术无法比拟的交互性和可访问性。最重要的是,在python程序中实现语音识别非常简单。整个代码实现下来还不到150行。

原理简介

许多现代语音识别系统会在HMM识别之前使用神经网络,通过特征变换和降维技术来简化语音信号,也可以使用语音活动检测器将音频信号减少到可能包含语音的部分。

幸运的是,对于python来讲,一些语音识别的服务可通过API在线使用,且其中大部分也提供了Python SDK。

本文做的聊天机器人是基于百度语音识别和图灵机器人二者之上共同实现的。大致的流程如下图:

1185feee0e3ca88dc74545c82856a2cd.png

原理流程图.PNG

这里需要用的模块库有 requests、time、datetime、pyaudio、wave、aipspeech 等。

话不多说,上代码:

##@氢立方 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

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("我说\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("机器人回\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("语音1")

file= filename_01

track = pygame.mixer.music.load(file)

pygame.mixer.music.play()

time.sleep(15)

pygame.mixer.music.stop()

pygame.quit()

运行结果如下:

小编说的是:今天看了电视剧。机器人回复的是:看了有没有开心点

在某种意义上来说,语境还是符合常理的。

4567dd3a4f5bf864ee2e136dec61713c.png

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持【听图阁-专注于Python设计】。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值