예제 #1
0
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
예제 #2
0
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
예제 #5
0
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
예제 #6
0
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
예제 #7
0
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)