Created
June 18, 2023 08:30
-
-
Save ehzawad/a460a62af5bedf08fdff37ee105d1d37 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| from flask import Flask, render_template, request as rqst, jsonify | |
| from flask_socketio import SocketIO, emit | |
| import sys | |
| from flask_cors import CORS | |
| import argparse | |
| import queue | |
| import sys | |
| import json | |
| import asyncio | |
| import sounddevice as sd | |
| from urllib.request import urlopen | |
| from urllib import request, parse | |
| import urllib.error | |
| from vosk import Model, KaldiRecognizer | |
| from engineio.payload import Payload | |
| Payload.max_decode_packets = 1000 | |
| samplerate = 8000 | |
| model = Model(model_path="/home/gns/vosk-api/model/") | |
| dump_fn = None | |
| rec = KaldiRecognizer(model, samplerate) | |
| q = queue.Queue() | |
| def int_or_str(text): | |
| """Helper function for argument parsing.""" | |
| try: | |
| return int(text) | |
| except ValueError: | |
| return text | |
| def callback(indata, frames, time, status): | |
| """This is called (from a separate thread) for each audio block.""" | |
| if status: | |
| print(status, file=sys.stderr) | |
| q.put(bytes(indata)) | |
| app = Flask(__name__) | |
| socketio = SocketIO(app) | |
| @app.route('/') | |
| def index(): | |
| return render_template('index.html') | |
| @app.route('/message') | |
| def message(): | |
| output = rqst.args['output'] | |
| print(output) | |
| #output="নামজারী সেবা প্রাপ্তির সময়" | |
| sender_data = '{"sender":"default","message":"'+output+'","cli": "12346798","metadata":"bn"}' | |
| post_data = sender_data.encode('utf-8') | |
| print(post_data) | |
| req = request.Request("http://192.168.10.44:5004/webhooks/rest/webhook", data=post_data) | |
| post_resp = request.urlopen(req) | |
| ai_resp = json.loads(post_resp.read()) | |
| print(ai_resp) | |
| #for tts request | |
| bot_response='No response' | |
| if(len(ai_resp)>0): | |
| bot_response=ai_resp[0]["text"] | |
| #url="http://192.168.10.42:5002/api/tts?text=%E0%A6%86%E0%A6%AA%E0%A6%A8%E0%A6%BE%E0%A6%95%E0%A7%87%20%E0%A6%A7%E0%A6%A8%E0%A7%8D%E0%A6%AF%E0%A6%AC%E0%A6%BE%E0%A6%A6%2C%20%2C%20%E0%A6%86%E0%A6%AA%E0%A6%A8%E0%A6%BE%E0%A6%95%E0%A7%87%20%E0%A6%95%E0%A6%BF%E0%A6%AD%E0%A6%BE%E0%A6%AC%E0%A7%87%20%E0%A6%B8%E0%A6%B9%E0%A6%BE%E0%A7%9F%E0%A6%A4%E0%A6%BE%20%E0%A6%95%E0%A6%B0%E0%A6%A4%E0%A7%87%20%E0%A6%AA%E0%A6%BE%E0%A6%B0%E0%A6%BF&speaker_id=Romana&style_wav=&language_id=" | |
| br = urllib.parse.quote(bot_response) | |
| url="http://192.168.10.42:5002/api/tts?text="+str(br)+"&speaker_id=Romana&style_wav=&language_id=" | |
| req = request.Request(url) | |
| post_resp = request.urlopen(req) | |
| #ai_resp = json.loads(post_resp.read()) | |
| print(post_resp) | |
| return post_resp | |
| return jsonify(ai_resp) | |
| @socketio.on('audio') | |
| def handle_audio(data): | |
| try: | |
| if rec.AcceptWaveform(data): | |
| kaldiresponse=rec.Result() | |
| # print(kaldiresponse) | |
| kr = json.loads(kaldiresponse) | |
| if(len(kr['text'])>0): | |
| print(f"TEXT Full Result-------------> {kr['partial']}") | |
| socketio.emit('kaldiresponse', kr['text']) | |
| else: | |
| print("Partial") | |
| kaldiresponse=rec.PartialResult() | |
| # print(kaldiresponse) | |
| kr = json.loads(kaldiresponse) | |
| if(len(kr['partial'])>0): | |
| print(f"TEXT -------------> {kr['partial']}") | |
| socketio.emit('kaldiresponse', kr['partial']) | |
| except Exception as e: | |
| print("No data") | |
| print('ERROR: '+ str(e)) | |
| # print('received audio: ' + str(data)) | |
| if __name__ == '__main__': | |
| socketio.run(app, port=5025, allow_unsafe_werkzeug=True) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.