ASRT_SpeechRecognition/asrserver.py

98 lines
2.2 KiB
Python
Raw Normal View History

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
@author: nl8590687
语音识别API的HTTP服务器程序
尚未完成
"""
import http.server
import urllib
import keras
#from SpeechModel22 import ModelSpeech
class TestHTTPHandle(http.server.BaseHTTPRequestHandler):
def _set_response(self):
self.send_response(200)
self.send_header('Content-type', 'text/html')
self.end_headers()
def do_GET(self):
buf = 'ASRT_SpeechRecognition API'
self.protocal_version = 'HTTP/1.1'
self._set_response()
buf = bytes(buf,encoding="utf-8")
self.wfile.write(buf)
def do_POST(self):
'''
处理通过POST方式传递过来并接收的语音数据
通过语音模型和语言模型计算得到语音识别结果并返回
'''
path = self.path
print(path)
#获取post提交的数据
datas = self.rfile.read(int(self.headers['content-length']))
#datas = urllib.unquote(datas).decode("utf-8", 'ignore')
datas = datas.decode('utf-8')
datas_split = datas.split('&')
token = ''
fs = 0
wavs = []
for line in datas_split:
[key, value]=line.split('=')
if('wavs' = key):
wavs.append(int(value))
elif('fs' == key):
fs = value
elif('token' == key ):
token = value
if(token == 'asd'):
buf = '成功\n'+'wavs:\n'+str(wavs)+'\nfs:\n'+str(fs)
else:
buf = '403'
#print(datas)
self._set_response()
'''
datapath = 'data/'
modelpath = 'model_speech'
ms = ModelSpeech(datapath)
ms.LoadModel(modelpath + 'speech_model22_e_0_step_37000.model')
wav_filename = ''
r_speech = ms.RecognizeSpeech_FromFile(wav_filename)
'''
#buf = '<!DOCTYPE HTML> \n<html> \n<head>\n<title>Post page</title>\n</head> \n<body>Post Data:%s <br />Path:%s\n</body> \n</html>'%(datas,self.path)
buf = bytes(buf,encoding="utf-8")
self.wfile.write(buf)
def recognize(self, wav)
def start_server(ip, port):
http_server = http.server.HTTPServer((ip, int(port)), TestHTTPHandle)
print('服务器已开启')
try:
http_server.serve_forever() #设置一直监听并接收请求
except KeyboardInterrupt:
pass
http_server.server_close()
print('HTTP server closed')
if __name__ == '__main__':
start_server('', 20000)