def getText2VoiceStream(inText,inFileName): channel = grpc.secure_channel('{}:{}'.format(HOST, PORT), UA.getCredentials()) stub = gigagenieRPC_pb2_grpc.GigagenieStub(channel) message = gigagenieRPC_pb2.reqText() message.lang=0 message.mode=0 message.text=inText writeFile=open(inFileName,'wb') for response in stub.getText2VoiceStream(message): if response.HasField("resOptions"): print ("\n\nResVoiceResult: %d" %(response.resOptions.resultCd)) if response.HasField("audioContent"): print ("Audio Stream\n\n") writeFile.write(response.audioContent) writeFile.close() return response.resOptions.resultCd
def getText2VoiceUrl(inText): channel = grpc.secure_channel('{}:{}'.format(HOST, PORT), UA.getCredentials()) stub = gigagenieRPC_pb2_grpc.GigagenieStub(channel) message = gigagenieRPC_pb2.reqText() message.lang=0 message.mode=0 message.text=inText response = stub.getText2VoiceUrl(message) print ("\n\nresultCd: %d" % (response.resultCd)) if response.resultCd == 200: print ("TTS 생성에 성공하였습니다.\n\n\n아래 URL을 웹브라우져에 넣어보세요.") print ("Stream Url: %s\n\n" % (response.url)) else: print ("TTS 생성에 실패하였습니다.") print ("Fail: %d" % (response.resultCd))
def writeVoiceFileFromText(inText, inFileName): channel = grpc.secure_channel('{}:{}'.format(GENIE_HOST, GENIE_PORT), UA.getCredentials()) stub = gigagenieRPC_pb2_grpc.GigagenieStub(channel) msg = gigagenieRPC_pb2.reqText() msg.lang = 0 msg.mode = 0 msg.text = inText writeFile = open(inFileName, 'wb') for response in stub.getText2VoiceStream(msg): if response.HasField('resOptions'): print('writeVoiceFileFromText: resp code %d' % response.resOptions.resultCd) if response.HasField('audioContent'): print('writeVoiceFileFromText: Writing Audio content.') writeFile.write(response.audioContent) writeFile.close() return response.resOptions.resultCd
def getTextFromVoice(): print('getTextFromVoice: Starting...') channel = grpc.secure_channel('{}:{}'.format(GENIE_HOST, GENIE_PORT), UA.getCredentials()) stub = gigagenieRPC_pb2_grpc.GigagenieStub(channel) request = voiceReqGenerator() resultText = '' for response in stub.getVoice2Text(request): if response.resultCd == 200: #partial resultText = response.recognizedText print('getTextFromVoice: recognizedText=%s' % response.recognizedText) elif response.resultCd == 201: #final resultText = response.recognizedText else: # error print('getTextFromVoice: resp code %d' % response.resultCd) break print('getTextFromVoice: result=%s' % resultText) return resultText
def queryByVoice(): print("\n\n\n질의할 내용을 말씀해 보세요.\n\n듣고 있는 중......\n") channel = grpc.secure_channel('{}:{}'.format(HOST, PORT), UA.getCredentials()) stub = gigagenieRPC_pb2_grpc.GigagenieStub(channel) request = generate_request() resultText = '' response = stub.queryByVoice(request) if response.resultCd == 200: print("질의 내용: %s" % (response.uword)) for a in response.action: response = a.mesg parsing_resp = response.replace('<![CDATA[', '') parsing_resp = parsing_resp.replace(']]>', '') resultText = parsing_resp print("\n질의에 대한 답변: " + parsing_resp + '\n\n\n') else: print("\n\nresultCd: %d\n" % (response.resultCd)) print("정상적인 음성인식이 되지 않았습니다.") return resultText
def getVoice2Text(): print ("\n\n음성인식을 시작합니다.\n\n종료하시려면 Ctrl+\ 키를 누루세요.\n\n\n") channel = grpc.secure_channel('{}:{}'.format(HOST, PORT), UA.getCredentials()) stub = gigagenieRPC_pb2_grpc.GigagenieStub(channel) request = generate_request() resultText = '' for response in stub.getVoice2Text(request): if response.resultCd == 200: # partial print('resultCd=%d | recognizedText= %s' % (response.resultCd, response.recognizedText)) resultText = response.recognizedText elif response.resultCd == 201: # final print('resultCd=%d | recognizedText= %s' % (response.resultCd, response.recognizedText)) resultText = response.recognizedText break else: print('resultCd=%d | recognizedText= %s' % (response.resultCd, response.recognizedText)) break print ("\n\n인식결과: %s \n\n\n" % (resultText)) return resultText
def queryByText(text): channel = grpc.secure_channel('{}:{}'.format(HOST, PORT), UA.getCredentials()) stub = gigagenieRPC_pb2_grpc.GigagenieStub(channel) message = gigagenieRPC_pb2.reqQueryText() message.queryText = text message.userSession = "1234" message.deviceId = "yourdevice" response = stub.queryByText(message) print ("\n\nresultCd: %d" % (response.resultCd)) if response.resultCd == 200: print ("\n\n\n질의한 내용: %s" % (response.uword)) #dssAction = response.action for a in response.action: response = a.mesg parsing_resp = response.replace('<![CDATA[', '') parsing_resp = parsing_resp.replace(']]>', '') print("\n\n질의에 대한 답변: " + parsing_resp + '\n\n\n') #return response.url else: print ("Fail: %d" % (response.resultCd))
def get_grpc_stub(): channel = grpc.secure_channel('{}:{}'.format(HOST, PORT), UA.getCredentials()) stub = gigagenieRPC_pb2_grpc.GigagenieStub(channel) return stub
from ctypes import * RATE = 16000 CHUNK = 512 HOST = 'gate.gigagenie.ai' PORT = 4080 ERROR_HANDLER_FUNC = CFUNCTYPE(None, c_char_p, c_int, c_char_p, c_int, c_char_p) def py_error_handler(filename, line, function, err, fmt): dummy_var = 0 c_error_handler = ERROR_HANDLER_FUNC(py_error_handler) asound = cdll.LoadLibrary('libasound.so') asound.snd_lib_error_set_handler(c_error_handler) channel = grpc.secure_channel('{}:{}'.format(HOST, PORT), UA.getCredentials()) stub = gigagenieRPC_pb2_grpc.GigagenieStub(channel) def generate_request(): with MS.MicrophoneStream(RATE, CHUNK) as stream: audio_generator = stream.generator() messageReq = gigagenieRPC_pb2.reqQueryVoice() messageReq.reqOptions.lang=0 messageReq.reqOptions.userSession="1234" messageReq.reqOptions.deviceId="aklsjdnalksd" yield messageReq for content in audio_generator: message = gigagenieRPC_pb2.reqQueryVoice() message.audioContent = content yield message rms = audioop.rms(content,2)