main
HuangHai 4 months ago
parent 888f5ed0e4
commit 7932179e71

@ -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())

@ -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()
close_redis_connection()

@ -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()

@ -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")

@ -15,4 +15,7 @@ REDIS_PASSWORD = None # Redis 密码(如果没有密码,设置为 None
# 阿里云中用来调用 deepseek v3 的密钥
MODEL_API_KEY = "sk-01d13a39e09844038322108ecdbd1bbc"
MODEL_NAME = "qwen-plus"
#MODEL_NAME = "deepseek-v3"
#MODEL_NAME = "deepseek-v3"
# TTS的APPKEY
APPKEY = "90RJcqjlN4ZqymGd" # 获取Appkey请前往控制台https://nls-portal.console.aliyun.com/applist

@ -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)
self._f.write(data)
Loading…
Cancel
Save