|
@@ -1,44 +1,40 @@
|
|
|
-#
|
|
|
-# import jieba
|
|
|
-#
|
|
|
-# TestStr = "能帮我查一下,我家水费欠多少"
|
|
|
-# seg_list = jieba.cut(TestStr, cut_all=False, HMM=True)
|
|
|
-# print ("Default Mode:", "/ ".join(seg_list))
|
|
|
-import json
|
|
|
-import uuid
|
|
|
-import mmh3
|
|
|
-
|
|
|
-from src.core.callcenter.dao import Bucket
|
|
|
-
|
|
|
-def get_bucket(custom_uuid=None, buckets=[]):
|
|
|
- random_id = abs(mmh3.hash(custom_uuid))
|
|
|
- for bucket in buckets:
|
|
|
- num = (random_id % 100 + 100) % 100
|
|
|
- if bucket.lower <= num < bucket.upper:
|
|
|
- return num, bucket
|
|
|
- return -1, buckets[0]
|
|
|
+
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
- # arr = ['C1879412349555838976','C1879412206890782720','C1879411969535119360','C1879411406290423808','C1879408024871899136','C1879407680997691392','C1879406254007390208','C1879404740748644352','C1879403850650226688','C1879402961977872384','C1879402509785763840','C1879402237567045632','C1879402005592674304','C1879400827102302208','C1879400778024751104','C1879400705488457728','C1879400533513605120','C1879400336188379136','C1879400327959154688','C1879399300082044928','C1879399233669435392','C1879396009050771456','C1879394097295396864','C1879393224498483200','C1879381728368398336','C1879381287505104896','C1879379466774515712','C1879376723787780096','C1879374004641468416','C1879373548330553344','C1879372415646175232','C1879367459866284032','C1879365634769424384','C1879364921326702592','C1879364787436130304','C1879363948554358784','C1879362454358724608','C1879360081448013824','C1879358294565457920','C1879358151116066816','C1879357497190518784','C1879357257641234432','C1879357023229972480','C1879355792935751680','C1879355755749052416','C1879354039309832192']
|
|
|
- # buckets=[Bucket(id=1, name="传统", lower=0, upper=90), Bucket(id=2, name="AI",lower=90, upper=100)]
|
|
|
- # for custom_uuid in arr:
|
|
|
- # num, bucket = get_bucket(custom_uuid=custom_uuid, buckets=buckets)
|
|
|
- # print(custom_uuid, num, bucket.name)
|
|
|
-
|
|
|
- # message = """{"seg_id": 2, "cn": {"st": {"rt": [{"ws": [{"cw": [{"sc": 0.00, "w": "停水", "wp": "n", "rl": "0", "wb": 9, "wc": 0.00, "we": 64}], "wb": 9,"we": 64},{"cw": [{"sc": 0.00, "w": "咨询", "wp": "n", "rl": "0", "wb": 65, "wc": 0.00, "we": 132}], "wb": 65,"we": 132}]}], "bg": "9510", "type": "0", "ed": "10950"}}, "ls": false}"""
|
|
|
- # message = '{"action":"result","code":"0","data":"{\"seg_id\":0,\"cn\":{\"st\":{\"rt\":[{\"ws\":[{\"cw\":[{\"sc\":0.00,\"w\":\"蜓\",\"wp\":\"n\",\"rl\":\"0\",\"wb\":13,\"wc\":0.00,\"we\":26}],\"wb\":0,\"we\":0}]}],\"bg\":\"9160\",\"type\":\"1\",\"ed\":\"0\"}},\"ls\":false}","desc":"success","sid":"rta108a8500@dx2f5f1b177d38000100"}'
|
|
|
- # # 解析最外层 JSON
|
|
|
- # message_dict = json.loads(message)
|
|
|
- #
|
|
|
- # # 解析嵌套的 JSON 字符串
|
|
|
- # data = json.loads(message_dict['data'])
|
|
|
- #
|
|
|
- # # 提取 "w" 字段中的词汇
|
|
|
- # words = ''.join(cw["w"] for item in data["cn"]["st"]["rt"] for ws in item["ws"] for cw in ws["cw"])
|
|
|
- #
|
|
|
- # print(words)
|
|
|
-
|
|
|
- # 读取文件
|
|
|
- with open('/Users/davidliu/hot_words.txt', 'r', encoding='utf-8') as f:
|
|
|
- content = f.read()
|
|
|
- print(content)
|
|
|
+ # pip install funasr torchaudio
|
|
|
+ from funasr import AutoModel
|
|
|
+ model = AutoModel(model="fsmn-vad", model_revision="v2.0.4")
|
|
|
+
|
|
|
+ import pyaudio
|
|
|
+ import struct
|
|
|
+
|
|
|
+ FORMAT = pyaudio.paInt16
|
|
|
+ CHANNELS = 1
|
|
|
+ RATE = 16000
|
|
|
+ FRAME_DURATION = 200 # ms
|
|
|
+ FRAME_SIZE = int(RATE * FRAME_DURATION / 1000)
|
|
|
+
|
|
|
+ audio = pyaudio.PyAudio()
|
|
|
+
|
|
|
+ stream = audio.open(
|
|
|
+ format=FORMAT,
|
|
|
+ channels=CHANNELS,
|
|
|
+ rate=RATE,
|
|
|
+ input=True,
|
|
|
+ frames_per_buffer=FRAME_SIZE
|
|
|
+ )
|
|
|
+
|
|
|
+ is_final = False
|
|
|
+ try:
|
|
|
+ cache = {}
|
|
|
+ while True:
|
|
|
+ frame = stream.read(FRAME_SIZE)
|
|
|
+ res = model.generate(input=frame, cache=cache, is_final=is_final, chunk_size=FRAME_DURATION)
|
|
|
+ if len(res[0]["value"]):
|
|
|
+ print('debugger',res[0]["value"][0])
|
|
|
+
|
|
|
+ except KeyboardInterrupt:
|
|
|
+ is_final = True
|
|
|
+ stream.stop_stream()
|
|
|
+ stream.close()
|
|
|
+ audio.terminate()
|