前言
在不远的将来,实现一定程度上的语音支持将成为日常科技的基本要求,整合了语音识别的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<TIME*6:#控制录音时间 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"我说\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()
运行结果如下:
小编说的是:今天看了电视剧。机器人回复的是:看了有没有开心点
在某种意义上来说,语境还是符合常理的。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
暂无评论...
稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?
更新日志
2024年11月26日
2024年11月26日
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]