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 62caaaf7..400638c0 100644 Binary files a/AI/WxMini/__pycache__/GetToken.cpython-310.pyc and b/AI/WxMini/__pycache__/GetToken.cpython-310.pyc differ diff --git a/AI/WxMini/__pycache__/RedisUtil.cpython-310.pyc b/AI/WxMini/__pycache__/RedisUtil.cpython-310.pyc new file mode 100644 index 00000000..3e874f58 Binary files /dev/null and b/AI/WxMini/__pycache__/RedisUtil.cpython-310.pyc differ diff --git a/AI/WxMini/__pycache__/TTS.cpython-310.pyc b/AI/WxMini/__pycache__/TTS.cpython-310.pyc deleted file mode 100644 index d8a9ba14..00000000 Binary files a/AI/WxMini/__pycache__/TTS.cpython-310.pyc and /dev/null differ diff --git a/AI/WxMini/__pycache__/TtsConfig.cpython-310.pyc b/AI/WxMini/__pycache__/TtsConfig.cpython-310.pyc index ccbbcd7a..86f19946 100644 Binary files a/AI/WxMini/__pycache__/TtsConfig.cpython-310.pyc and b/AI/WxMini/__pycache__/TtsConfig.cpython-310.pyc differ diff --git a/AI/WxMini/__pycache__/TtsUtil.cpython-310.pyc b/AI/WxMini/__pycache__/TtsUtil.cpython-310.pyc new file mode 100644 index 00000000..f23f23b1 Binary files /dev/null and b/AI/WxMini/__pycache__/TtsUtil.cpython-310.pyc differ