python
import urllib.request, json, os, time
API_KEY = os.getenv("DASHSCOPE_API_KEY", "sk-46dec88b0761409dbd416405d53f73a5")
def transcribe_meeting(file_path: str) -> dict:
# Step 1: 上传CDN获取公开URL(通过upload_to_cdn工具)
# 或直接用文件绝对路径(需公网可访问)
# Step 2: 提交Fun-ASR任务
url = "https://dashscope.aliyuncs.com/api/v1/services/audio/asr/transcription"
payload = {
"model": "fun-asr",
"input": {"file_urls": [file_path]}, # 公网URL或CDN URL
"parameters": {
"language_hints": ["zh"],
"diarization_enabled": True,
"speaker_count": 8
}
}
req = urllib.request.Request(
url,
data=json.dumps(payload, ensure_ascii=False).encode(),
headers={
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json",
"X-DashScope-Async": "enable"
},
method="POST"
)
with urllib.request.urlopen(req, timeout=10) as r:
result = json.loads(r.read())
return result["output"]["task_id"]
python
def wait_for_result(task_id: str, poll_interval=5, max_wait=1800):
query_url = f"https://dashscope.aliyuncs.com/api/v1/tasks/{task_id}"
start = time.time()
while True:
req = urllib.request.Request(query_url, headers={
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
}, method="POST")
with urllib.request.urlopen(req, timeout=10) as r:
data = json.loads(r.read())
status = data["output"]["task_status"]
elapsed = time.time() - start
print(f"[{elapsed:.0f}s] {status}")
if status == "SUCCEEDED":
return data["output"]["results"][0]
elif status in ("RUNNING", "PENDING"):
time.sleep(poll_interval)
else:
raise Exception(f"失败: {status}")
口语写法标准术语BluePass / blue pass / 不passBluePass(统一品牌名)瑞金专区瑞金医院专区CAR-T / car t / 细胞治疗CAR-T(嵌合抗原受体T细胞疗法)vibe-codingVibe Coding(快速原型开发模式)TPATPA(第三方健康管理机构)MSHMSH International(国际健康险TPA)Bupa / 保柏Bupa(保柏集团,高端医疗险供应商)汇丰HSBC(汇丰银行/汇丰人寿)保诚 / Prudential保诚(Prudential plc,保险公司)友邦 / AIA友邦保险( AIA,全称友邦人寿保险有限公司)有邦 / 有邦的友邦(AIA)和睦家和睦家医疗(UFH,私立高端医疗机构)慕在 / 睦邻 / 木在慕在(汇丰合作方APP演示方)FisherFisher(外部合作伙伴)王英王英(港人北上业务接口人)
口语标准术语北上 / 港人北上港人北上(中国香港居民赴内地就医)来华就医 / 海外来华国际患者赴华就医(Medical Tourism to China)保单校验保单真实性核验与理赔资格校验履约 / 履约服务医疗服务履约(Service Fulfillment)系统对接与保司核心系统API对接体检 / 齿科体检服务(Health Check)/ 齿科服务(Dental Service)大湾区粤港澳大湾区(Greater Bay Area)2C / ToC直接面向消费者(Direct-to-Consumer)2B / ToB直接面向企业(Business-to-Business)投流付费广告投放(Paid Traffic Acquisition)转化转化率优化(Conversion Optimization)排期预约等待周期MDT多学科会诊(Multi-Disciplinary Treatment)质子刀质子重离子治疗(Proton Therapy)免疫治疗肿瘤免疫治疗(Immuno-Oncology)
口语标准术语明哲 / 明泽 / 李明哲李明哲(产品技术负责人)瑞恩 / 瑞英 / 瑞盈CRA团队,港行业务负责人瑞英(女)CRA团队管理层Vincent / 文森CRA团队成员,香港业务Judy / 朱丽 / Lisa管理层,产品经理徐老师 / 徐昂瑞金BD对接负责人老板公司管理层(会议主持)瑞盈同"瑞英",CRA团队管理层CRAClinical Research Associate / 港行业务团队MediTrust / 美信上海镁信健康科技集团股份有限公司BluePass镁信健康旗下海外就医服务平台镁数科技镁信健康旗下科技子公司一码直付镁信健康电子理赔直付平台ClaimMaster镁信健康理赔大师产品镁信镁信健康(MediTrust)
声音特征身份常用表达沉稳有力,主持会议老板(公司管理层)"我觉得……"、"第一个……"、"你们……"语速快,思路清晰,介绍产品李明哲(产品技术)"功能就是……"、"后台也能看到……"声音柔和,女性,积极提问瑞恩/CRA团队"能不能……"、"我们能不能……"女性,逻辑清晰,讨论业务Judy/Lisa/管理层"我觉得……"、"业务需求……"男性,讨论港行业务Vincent/文森"我跟明哲在讨论……"男性,讨论BD/医院对接徐昂/徐老师"我们正在跟瑞金……"
/workspace/memory/knowledge_index.json 查找历史会议记录/workspace/memory/meetings/ 下近期会议,比对声音特征text
/workspace/memory/meetings/{YYYY-MM-DD}-{会议主题简称}_会议纪要.md
/workspace/memory/meetings/{YYYY-MM-DD}-{会议主题简称}_原始转录.md
markdown
# {YYYY-MM-DD} {会议名称} 会议纪要
> **时间:** {YYYY-MM-DD HH:MM}
> **参会人员:** {人员名单}
> **会议主持:** {主持人}
> **纪要整理:** 许霸天 @ OpenClaw
---
## 议题一:{议题名称}
### 讨论要点
- {发言人}:{核心观点,客观陈述,不含个人评价}
- {发言人}:{补充观点}
### 共识
- {已达成一致的结论}
### 待办
- [TODO] {事项}(负责人:{人} | 截止:{时间})
---
## 议题二:{议题名称}
### 讨论要点
- ...
### 分歧/待确认
- {尚未达成一致的事项}
---
## 附录:关键术语解释
| 术语 | 解释 |
|------|------|
| BluePass | 镁信健康旗下海外就医服务平台,为海外患者提供中国就医预约、翻译、陪诊等一站式服务 |
| ... | ... |
---
*纪要整理完毕 | {时间戳}*
用户只需说:
"帮我整理这个会议的纪要:[上传音频文件]"
许霸天自动执行:
/workspace/memory/meetings/