前言

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

原理简介

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

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

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

原理流程图.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()

运行结果如下:

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

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持聚米学院。

python实现语音通话_python 实现语音聊天机器人的示例代码相关推荐

  1. python基于udp的网络聊天室再用tkinter显示_Python实现网络聊天室的示例代码(支持多人聊天与私聊)...

    实验名称: 网络聊天室 功能: i. 掌握利用Socket进行编程的技术 ii. 掌握多线程技术,保证双方可以同时发送 iii. 建立聊天工具 iv. 可以和单人聊天 v. 可以和多个人同时进行聊天 ...

  2. python开发qq聊天机器人_Python qqbot 实现qq机器人的示例代码

    qqbot 是一个用 python 实现的.基于腾讯 SmartQQ 协议的 QQ 机器人框架,可运行在 Linux . Windows 和 Mac OSX 平台下. 你可以通过扩展 qqbot 来实 ...

  3. python淘宝秒杀_Python 实现淘宝秒杀的示例代码

    新手学习Python,之前在网上看见一位朋友写的40行Python代码搞定京东秒杀,想在淘宝上帮女朋友抢玩偶,所以就照猫画虎的写了下淘宝的秒杀脚本,经自己实验可行.直接上代码: #-*- coding ...

  4. python制作自动回复脚本_python itchat实现微信自动回复的示例代码

    今天在实验楼发现一个特别好玩的,Python 微信库itchat,可以实现自动回复等多种功能,好玩到根本停不下来啊,尤其是调戏调戏不懂计算机的,特别有成就感,哈哈!! 代码如下: #coding=ut ...

  5. 用python写秒杀程序_Python 实现淘宝秒杀的示例代码

    新手学习Python,之前在网上看见一位朋友写的40行Python代码搞定京东秒杀,想在淘宝上帮女朋友抢玩偶,所以就照猫画虎的写了下淘宝的秒杀脚本,经自己实验可行.直接上代码: #-*- coding ...

  6. python实现简易聊天需要登录博客园zip下载_Python基于Socket实现简易多人聊天室的示例代码...

    前言 套接字(Sockets)是双向通信信道的端点. 套接字可以在一个进程内,在同一机器上的进程之间,或者在不同主机的进程之间进行通信,主机可以是任何一台有连接互联网的机器. 套接字可以通过多种不同的 ...

  7. asp.net ajax聊天室,ASP.NET MVC4异步聊天室的示例代码

    本文介绍了ASP.NET MVC4异步聊天室的示例代码,分享给大家,具体如下: 类图: Domain层 IChatRoom.cs using System; using System.Collecti ...

  8. python写算法求最短路径,Python实现迪杰斯特拉算法并生成最短路径的示例代码

    def Dijkstra(network,s,d):#迪杰斯特拉算法算s-d的最短路径,并返回该路径和代价 print("Start Dijstra Path--") path=[ ...

  9. python自动导出数据脚本_使用python生成一个导出数据库的bat脚本文件的示例代码...

    这篇文章分享使用python生成一个导出数据库的bat脚本文件的示例代码 实例如下:# 环境: python3.x def getExportDbSql(db, index): # 获取导出一个数据库 ...

最新文章

  1. 使用JS在textarea在光标处插入内容
  2. 函数调用时栈的相关变化
  3. 自己定义WinXP的时间校正服务器
  4. BNUOJ 4215 最长公共连续子序列
  5. 拦截 数据_大数据之六类Flume拦截器配置
  6. 进程/线程间通信和同步
  7. 台位数量超过9时,知识竞赛软件如何进行前期设置?
  8. java URl 匹配器
  9. TinyPXE网络启动,打造无盘工作站
  10. 根据银行卡号判断银行卡是否正确与归属银行
  11. 流量卡之家:物联网僵尸网络和DDoS攻击:构建网络风险防火墙
  12. php_version_too_low,以太坊常见问题和错误 / Web3j error:Intrinsic gas too low - 汇智网
  13. 音频文件 数据库存储_Apache Kafka是数据库吗?
  14. 15.4 xshell使用xftp传输文件 15.5 使用pure-ftpd搭建ftp服务
  15. vijos- P1383盗窃-黑珍珠 (python + 代码优化)
  16. python 矩阵特征值_用python求矩阵特征值的方法?
  17. UEFI调试网络启动-WINDOWS搭建PXE服务器
  18. 公务员考试之学霸笔记--【思维导图】本人珍藏篇
  19. Python文本情感分析
  20. 面试 | 推荐几个程序员刷题的网站!面试必备!!!

热门文章

  1. 1.2 随机事件及其概率
  2. discus mysql 性能_百万纪录级mysql数据库以及discuz!优化
  3. ASP.Net0625金通置业企业网站
  4. 2020-10-30
  5. ScrollView中嵌套GridView,不在顶部解决办法
  6. 《新100个基本》摘录,停下来刷新一下思维!
  7. SparkSession
  8. 以电影“斯巴达300勇士”来谈谈团队的建设
  9. Mysql从删库到跑路(1)
  10. 66岁比尔盖茨离婚!西雅图并不相信爱情~