From 7932179e71c13a3843b723a9c4db9f0bf86c1256 Mon Sep 17 00:00:00 2001 From: HuangHai <10402852@qq.com> Date: Sat, 22 Mar 2025 14:20:02 +0800 Subject: [PATCH] 'commit' --- AI/WxMini/GetToken.py | 12 +++- AI/WxMini/RedisUtil.py | 7 +- AI/WxMini/Start.py | 2 +- AI/WxMini/TestMilvusBase.py | 61 ++++++++++++++++++ AI/WxMini/TtsConfig.py | 5 +- AI/WxMini/{tts.py => TtsUtil.py} | 18 ++---- .../__pycache__/GetToken.cpython-310.pyc | Bin 1238 -> 1360 bytes .../__pycache__/RedisUtil.cpython-310.pyc | Bin 0 -> 1850 bytes AI/WxMini/__pycache__/TTS.cpython-310.pyc | Bin 1913 -> 0 bytes .../__pycache__/TtsConfig.cpython-310.pyc | Bin 495 -> 527 bytes AI/WxMini/__pycache__/TtsUtil.cpython-310.pyc | Bin 0 -> 1276 bytes 11 files changed, 83 insertions(+), 22 deletions(-) create mode 100644 AI/WxMini/TestMilvusBase.py rename AI/WxMini/{tts.py => TtsUtil.py} (52%) create mode 100644 AI/WxMini/__pycache__/RedisUtil.cpython-310.pyc delete mode 100644 AI/WxMini/__pycache__/TTS.cpython-310.pyc create mode 100644 AI/WxMini/__pycache__/TtsUtil.cpython-310.pyc diff --git a/AI/WxMini/GetToken.py b/AI/WxMini/GetToken.py index 32f96bf0..ca17e395 100644 --- a/AI/WxMini/GetToken.py +++ b/AI/WxMini/GetToken.py @@ -6,8 +6,15 @@ from datetime import datetime from aliyunsdkcore.client import AcsClient from aliyunsdkcore.request import CommonRequest from TtsConfig import * +from WxMini.RedisUtil import set_tts_token, get_tts_token + def getToken(): + # 从Redis获取 TTS Token + retrieved_token = get_tts_token() + if retrieved_token: + print("使用Redis中的Token:", retrieved_token) + return retrieved_token # 创建AcsClient实例 client = AcsClient( ACCESS_KEY_ID, ACCESS_KEY_SECRET, "cn-shanghai" @@ -35,10 +42,9 @@ def getToken(): now = datetime.now() time_diff = (expire_date - now).total_seconds() print("距离过期还有(秒):", time_diff) + # 设置 TTS Token + set_tts_token(token) return token except Exception as e: print(e) - -if __name__ == '__main__': - print(getToken()) diff --git a/AI/WxMini/RedisUtil.py b/AI/WxMini/RedisUtil.py index 62a5bc4d..8e947971 100644 --- a/AI/WxMini/RedisUtil.py +++ b/AI/WxMini/RedisUtil.py @@ -1,10 +1,11 @@ import redis -from AlyConfig import * +from TtsConfig import * # 初始化 Redis 连接池 pool = redis.ConnectionPool(host=REDIS_HOST, port=REDIS_PORT, db=REDIS_DB, password=REDIS_PASSWORD) -def set_tts_token(token, expire_time=750): + +def set_tts_token(token, expire_time=60 * 60 * 4): """ 设置 TTS Token 到 Redis,并设置过期时间 :param token: TTS Token 字符串 @@ -62,4 +63,4 @@ if __name__ == '__main__': print("获取到的 TTS Token:", retrieved_token) # 显式关闭 Redis 连接池 - close_redis_connection() \ No newline at end of file + close_redis_connection() diff --git a/AI/WxMini/Start.py b/AI/WxMini/Start.py index f902013c..087d7153 100644 --- a/AI/WxMini/Start.py +++ b/AI/WxMini/Start.py @@ -5,7 +5,7 @@ from fastapi import FastAPI, Form, HTTPException from openai import OpenAI from TtsConfig import * from WxMini.OssUtil import upload_mp3_to_oss -from WxMini.TTS import TTS +from WxMini.TtsUtil import TTS # 初始化 FastAPI 应用 app = FastAPI() diff --git a/AI/WxMini/TestMilvusBase.py b/AI/WxMini/TestMilvusBase.py new file mode 100644 index 00000000..fc964cac --- /dev/null +++ b/AI/WxMini/TestMilvusBase.py @@ -0,0 +1,61 @@ +# D:\anaconda3\envs\py310\Scripts\pip.exe install pymilvus +from pymilvus import connections, FieldSchema, CollectionSchema, DataType, Collection, utility + +# 1. 连接 Milvus +connections.connect("default", host="10.10.14.101", port="19530") + +# 2. 定义集合的字段和模式 +fields = [ + FieldSchema(name="id", dtype=DataType.INT64, is_primary=True, auto_id=True), + FieldSchema(name="embedding", dtype=DataType.FLOAT_VECTOR, dim=128) +] +schema = CollectionSchema(fields, description="Simple demo collection") + +# 3. 创建集合 +collection_name = "demo_collection" +if utility.has_collection(collection_name): + utility.drop_collection(collection_name) # 如果集合已存在,先删除 + +collection = Collection(name=collection_name, schema=schema) + +# 4. 插入数据 +import random +data = [ + [random.random() for _ in range(128)], # 第一个向量 + [random.random() for _ in range(128)], # 第二个向量 + [random.random() for _ in range(128)] # 第三个向量 +] +entities = [data] # 插入的数据 +collection.insert(entities) + +# 5. 创建索引 +index_params = { + "index_type": "IVF_FLAT", # 索引类型 + "metric_type": "L2", # 距离度量方式 + "params": {"nlist": 128} # 索引参数 +} +collection.create_index("embedding", index_params) + +# 6. 加载集合到内存 +collection.load() + +# 7. 查询数据 +query_vector = [random.random() for _ in range(128)] # 查询向量 +search_params = { + "metric_type": "L2", + "params": {"nprobe": 10} # 查询参数 +} +results = collection.search( + data=[query_vector], # 查询向量 + anns_field="embedding", # 查询字段 + param=search_params, + limit=2 # 返回最相似的 2 个结果 +) + +# 8. 输出查询结果 +for hits in results: + for hit in hits: + print(f"ID: {hit.id}, Distance: {hit.distance}") + +# 9. 关闭连接 +connections.disconnect("default") \ No newline at end of file diff --git a/AI/WxMini/TtsConfig.py b/AI/WxMini/TtsConfig.py index bd57b404..253f0bc1 100644 --- a/AI/WxMini/TtsConfig.py +++ b/AI/WxMini/TtsConfig.py @@ -15,4 +15,7 @@ REDIS_PASSWORD = None # Redis 密码(如果没有密码,设置为 None) # 阿里云中用来调用 deepseek v3 的密钥 MODEL_API_KEY = "sk-01d13a39e09844038322108ecdbd1bbc" MODEL_NAME = "qwen-plus" -#MODEL_NAME = "deepseek-v3" \ No newline at end of file +#MODEL_NAME = "deepseek-v3" + +# TTS的APPKEY +APPKEY = "90RJcqjlN4ZqymGd" # 获取Appkey请前往控制台:https://nls-portal.console.aliyun.com/applist diff --git a/AI/WxMini/tts.py b/AI/WxMini/TtsUtil.py similarity index 52% rename from AI/WxMini/tts.py rename to AI/WxMini/TtsUtil.py index 3450d794..1a843d5c 100644 --- a/AI/WxMini/tts.py +++ b/AI/WxMini/TtsUtil.py @@ -1,12 +1,8 @@ # -*- coding: utf-8 -*- import nls -import os from GetToken import * - +from TtsConfig import * URL = "wss://nls-gateway-cn-shanghai.aliyuncs.com/ws/v1" -TOKEN = getToken() # 参考https://help.aliyun.com/document_detail/450255.html获取token -APPKEY = "90RJcqjlN4ZqymGd" # 获取Appkey请前往控制台:https://nls-portal.console.aliyun.com/applist - class TTS: def __init__(self, _file): @@ -16,9 +12,9 @@ class TTS: def start(self, text): self._text = text # 确保目录存在 - os.makedirs(os.path.dirname(self._file), exist_ok=True) + # os.makedirs(os.path.dirname(self._file), exist_ok=True) self._f = open(self._file, "wb") - + TOKEN = getToken() # 参考https://help.aliyun.com/document_detail/450255.html获取token # 初始化 TTS tts = nls.NlsSpeechSynthesizer( url=URL, @@ -38,10 +34,4 @@ class TTS: def on_data(self, data, *args): if self._f: - self._f.write(data) - - -if __name__ == '__main__': - TEXT = '你好,听到你心情不好我很抱歉。可以告诉我是什么让你感到如此糟糕吗?有时候把烦恼说出来会让我们感觉好一些。无论发生了什么,我都会在这里认真倾听,和你一起面对。记住,每个困难都会过去,明天总是新的开始。' - t = TTS("tests/test_tts.mp3") - t.start(TEXT) \ No newline at end of file + self._f.write(data) \ No newline at end of file diff --git a/AI/WxMini/__pycache__/GetToken.cpython-310.pyc b/AI/WxMini/__pycache__/GetToken.cpython-310.pyc index 62caaaf71fb91676d010a4d88d4e473bb83af042..400638c05d37e72cb7be715744c55f7bc909186b 100644 GIT binary patch delta 668 zcmYk4yKfUg5XNWrUVAUwArQwBO-O@iNC{wA#VX_4nqm zbQT{BFI=sHFxys#2fSkkHiEDO--o~%?p^QK+1O7)*_1MA%HGScJNDO4wyk2^zvU4W z^Ka2k77;+g08&s8dlCgI7%-&n5lALAsS7sHQj`XHm}0ppv=Nfda!cql>T_Yt&=zJv zyLT1lj$$KBHR%S$SDFM4aNe ziWl)nt&AYGm8I-O=;w3PI3#<@naHP7-i2qdwIsfV{Lh4dTSE6zYUjv?z zCv{)Dg>y>VxD9px{$`bq>FCSX<97!SLlGrMho6r>>_09J`P#1A>RwDma?a%Q6Ut5jY)fCov`gC(d|@>?g`OYRCLWrzbYs;R^i{kd&x!=AlQMV+B3!FQSE^ AB>(^b delta 553 zcmY+A&5G1O5XY-JU)}jq=P0dGEn2XAY|9TzO9KfkVzKTUmezl$&r0v9MAJ^ArsVJ*T7_;hjY z#zk8?A7IN#xa2Qc5hWsVYN!!G;wCH(ZXQnirGMcO^e%TO%ikml6e=dMHY!j?4Har^ zP05zzKx9c{MYc3o?No-ewXqLHEFDd}2K$FlJU>S1tU+b2 zm=jydYkf^-m96bIkb=ljp>(xVGX(0MT0+IOt@$}fE z=>H0XA@cX^s92|J$K!Z5NwYYP++xstG4DS(sb>@Ni;E$R6{G*<(%;ovvs}K~Np2&( T$^i*yKKhg#Ipgagnn!;CQ|Nz4 diff --git a/AI/WxMini/__pycache__/RedisUtil.cpython-310.pyc b/AI/WxMini/__pycache__/RedisUtil.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3e874f58cdfe491dac5e0618b9b363365f2357ba GIT binary patch literal 1850 zcmZuy|4$r66rY*hz1utP4z!52X>@E4;s2<3<{t~C{Uakq2u z*#jWPk2`1(JA~pHTp?vLs8CWyWeg`*FmhC?mhl3j+BHR-tq0L?8mY+9#$Ly$0v6*5 zunCow1$2!B7MH-LqD&~lGSEiw2ukYiiimAM+g*FG^Xry}h}+(k)f$<9)-1BV1CA-m7yvKit~hTyL~uqoq7&rjs9L zDWh?#{jKSp@4nvO`W#~I-JjoGyJ4Jq^Hl@pr2B20ZO&Q6BFi~>t7w)itKdZ($2MhH z$T(r6?n`i!hSP7XSEs-7zqlTp8}@CCx4rp`;fl125bkkM{(t=&cXsdIOc@=?kf(8x z2Tzmf5ST)I#b%DDm3Y4Bc#-p?IaU&91K>4zD6gsEvL5ChX15W43L^cTY)|!4yT{@~ zz3=CX{THobfA84~y*;Dv<%{`V8RG*dUwEZ7=EWh1d3aGByzLecBorepqzxzVNvwZN z{^d`@WDdT=rhs-xsX-WwpJ<>IDx+nf)C#WPGUlyiysT1X1^1vdkcg@^QfZP@p|LlB zR6uti6%zsEWQ9k>6*bqn{PJn{Ine7wICQU0U-dWE z0~T}ym_KqR!>?hU4D%+jYfOkZ2v6w;v_q8TEXsJZm=-uB6@EE^ zaI53@3{2TV5G_WcM8z?zlMtXNet_dY`~)l>!4bp6A&wVeFy7>#WxN6pk9ZzxNGTF2 zW$bxC3RVCqA|8w*NGTOGfhbr~sY#?%_XV-PDF5pG1Aps^|LISAbE^lCJzT2J-mKnP zmIkgkxFjc3Zfybb8F;wQ!s6qd4|3X(RD)DTp_FRH+>lA2A#Cwz{@QW{%Vwr5KePS< zh*Gx`Ac(5V8@9HfFiJo_=$HapsCr3CIW!+|IXCbxNj^n8P0n zN;XUMy-3Ef&soLG`F<|}eeLz>62%|wKHq*JZNA%?&K&4no!uEv59Zt7@e+a7bvB*u z>FjQoSC?ffG3Ey+E%psF)0Fh}nxPtao_)k<@U8{fsWVDyl2-a#!xnW5>}^30TkNGH a9Y3i=6}?4o)tgkJu(fQ6rVeUt# zYL}=+^-+oHRoOIHnx^_>zl|DZh8Z+nC1wL_m}z90bA*83j(B7cEASgp-lyM6YsIz?jGA|wTsSBzgys~1+UaLz}pVKZnnI&dG7~>1HHxE z7W2SRsht+k-Gh$|$~G8$3kW752_QhIJSv$ARj3NHngBO7nxY2iI!)6I%qiN?A!Qqd zlFxS((9zn1Ys}QUF!%-#fz(Szq+W153A3e)pj4>@Qlk<$k&&Vv*nT$)vbsnIJwCIk z<8})@A1{S!`Ted?te{6|R+m#`LbkfHvQRlIcKK-tGAsFwF#Yw?ds{mx-{<*#ogaaR zU7p+Bx&8gleS^Cl*XabTt>qzMSQco3Wi`VQ4yBe_h)yzOxDhw386RP#!p4}@R#?O= zq=59wFq9b;7;5JTCT~(EQlO(wm8uLZQ?NE>(&r?oE%H@!c_3`CL5ByH*C*tG{n-o< z3)o;FWRDA@WcM-Z_*|%E8#t$6?b;<4GZm^=X0DH|>Kh=0#vyeh{7=+=uR=n#O^ovQ?0fhQ*lJqs>|B{Yvgd;|R$6_Q636c>KUlzcDSp28K zd=Jfl?*uHXtY(DTkf3M5{xGBzL`CECU|U7hf`}S0F{`#mQj>zsaTm100((1<10{&- z55RQja_uuRLVDw>QyH((q_SFhEtl1V((f0A7I=NkHFdjO?qfs#3yAJH5N2x7vAzAw z5lX522DG?#&~pk*r0g!wFWEshEfn|%m`~)2yraxmp{HZW4SE=NhM6yvkN55pTK>bG zJ90wbzGu(Q9iQHJ9e08M7zA0XlM)0Em&r$ZFT&t0AXFm9uS!&+|NUfY*oZF(T*h41 zz-xqEX;~s;StXD57jfNaSqJ*}h9!ZKT>=I}JWvX}w|?BFSZiEx{A5T5F*GA( zsEw+R7K~T29oMq@v(T@#n=|2sn|GIvgvTz2V^>kVU5%<=)UHp$_h{^Rcxx=0_&K^V zey4IMoSLsKUI>p*)aS>+6nzhBrFLViJ~s;oqtR*b5MDeKT{*veZF>3Ix8bo9cbBH4 zGvm>T-@?ktXkucydNKNZsXqTpcz7W?d!e>;3eJM7+Tvw6UcWRBL2K75wT06VE;=z& zpIZp0jxT>RU0e7vi3Lz$|4Q{HoDI+XSigO8rX2-9e1K^}Y3eJ(f%g{9kY+$F zJvuo)()!f$a-Qj>UTowj9xo;Nl3tDT-fEmS;w&8x^F%k2qQ5-S%QsIXczF9@us98- zkAagUq=JM@P{D4KkP9vxhyX!&5M5CbK15Gc0Z7gAcDt2eg2li&+Bq=22i%lSNdy&v zhr})Nj5Y&i-Kd*p(z2)v3rEYWt6bRpj3^(%e@DJM)e-tyq1HQB(!6)6$a|eL-*>KU z{E+5pr)~6AlV**<*!ocfPfQfyF%3i$kJjj<4zL=FS0CZSEfug5-vyY=@EJh421Rc& zz{!oXNp3OYu6d?1WyXhhRj`_158PXP%GY+l3e-Vm9&ifPp(;(wMmGZ2@}bJCYl?N5 zhh97wtjn>j6nP|K6I&l9NmghXRyNYOxFJ)^`-786$;~27q^-o=LiJ-4)PW=;H;i?P zfy_&Klm~!Azb8!_vs(_Thx?kDZVjYNR$JrTtV*3uq_X_#PnWEB=JMr>=dY_>a7^t6 zXI*V#WdcVb2i7U`yX_w@o^M)ij4s)qxhkGH0Im+E_k;83F78o>F^WG2e%|~2)kzh( zF4HCyb}h!D5mw-V{t6sYrjSbVggzyd7^Iud$z#po*RTgt9eVTVx7YU`ZvB2A{JX#J zzkYo8-eR1nZV0T6dt*+yrc1Ppo>M)qr&$L=Z?Gc1L~Q9}6Wu z>JR)b(Ms4~!lZ;<>ivXH>C-u2R9s;%!PS`8x+9eu3Fv0TqSgv;{ghFZ;xO18%^vFf zKiPo{&Ksl|RIsV@xG$r~)}p9ih+&5FdKCRUjI-Grh5s(4Jf*HPh4CBs^ggTwA!$6| z6QBByzqjrxd>**!3kadVvS_F(d|KyED<8`M literal 0 HcmV?d00001