File size: 1,744 Bytes
bf00a95
8b9c4e4
70324fc
8b9c4e4
822d179
 
 
1bb9b5d
15833f6
074798d
7b910fd
822d179
8300a7c
 
 
 
ee3e7dd
 
 
27407e5
1bb9b5d
dcdfd1b
7b910fd
1bb9b5d
7b910fd
4bc235e
8b9c4e4
 
 
 
27407e5
 
8b9c4e4
 
 
 
 
27407e5
607b1f2
8b9c4e4
 
 
 
 
7b910fd
 
1caf542
8b9c4e4
7b910fd
1caf542
8b9c4e4
1caf542
43cd7bc
1caf542
43cd7bc
8b9c4e4
1caf542
 
 
 
8b9c4e4
1caf542
a41efc2
7b910fd
4bc235e
1bb9b5d
27407e5
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
from flask import Flask, request
from gradio_client import Client
from uuid import uuid4
import os, json, requests, hashlib

app = Flask(__name__)

secret = os.environ.get("auth")
headers = {'Authorization': os.environ.get("auth")}

res_dict = {}

@app.route('/', methods=['GET'])
def index():
    return {}, 200

@app.route('/queue', methods=['POST'])
def queue():
    if request.json.get('secret') != secret:
        return {}, 400
        
    uuid = str(uuid4())
    res_dict[uuid] = request.json
    
    return { 'uuid': uuid }, 200


@app.route('/6asr', methods=['POST'])
def sixasr():
    data = res_dict.get(request.json.get('uuid'))
    if not data:
        return {}, 400

    base64 = request.json.get('base64')
    dialectCode = request.json.get('dialectCode')
    if not base64 or not dialectCode:
        return {}, 400
    
    if hashlib.sha256(base64.encode('utf-8')).hexdigest() != data.get("base64Hash"):
        return {}, 400

    URL = 'https://nuu-lab-gradio-6asr-whisper.hf.space/run/predict'
    body = {'data': ["whisper-large-v3", f"htia_{dialectCode}", None, base64, '']}

    res = requests.post(URL, json=body, headers=headers)
    if res.status_code == 200:
        res_json = res.json()

        callbackURL = data.get('callbackURL')
        callback_body = data.get('callbackBody')

        if res_json.get('data'):
            callback_body['length'] = len(res_json['data'][0])
        if res_json.get('srt'):
            callback_body['srt'] = res_json['srt'][0]

        requests.post(callbackURL, json=callback_body)

        print(callback_body)
        print(res_json)

        return res_json

    return {'error': '請求失敗'}, 500


if __name__ == "__main__":
    app.run(host="0.0.0.0", port=7860)