如何将外部问题及Python语音转文本结果发送至IBM Watson Assistant
Python实现语音转文本结果对接IBM Watson Assistant
1. 准备工作
- 从IBM Cloud控制台获取Watson Assistant的API Key、服务URL和目标助理的
assistant_id - 安装IBM Watson Python SDK及环境变量管理工具:
pip install ibm-watson python-dotenv
2. 核心对接逻辑
假设你已经有成熟的语音转文本函数(比如speech_to_text(),返回转换后的字符串),以下是对接Watson Assistant的核心代码:
初始化Watson客户端
from ibm_watson import AssistantV2 from ibm_cloud_sdk_core.authenticators import IAMAuthenticator from dotenv import load_dotenv import os # 加载本地环境变量(避免硬编码敏感凭据) load_dotenv() authenticator = IAMAuthenticator(os.getenv('WATSON_ASSISTANT_API_KEY')) assistant = AssistantV2( version='2021-06-14', authenticator=authenticator ) assistant.set_service_url(os.getenv('WATSON_ASSISTANT_URL')) assistant_id = os.getenv('WATSON_ASSISTANT_ID')
发送文本并获取回复
def get_watson_response(input_text, session_id=None): # 无会话ID时创建新会话 if not session_id: session_response = assistant.create_session(assistant_id=assistant_id).get_result() session_id = session_response['session_id'] # 发送用户文本到Watson response = assistant.message( assistant_id=assistant_id, session_id=session_id, input={ 'message_type': 'text', 'text': input_text } ).get_result() # 提取Watson的回复内容 watson_reply = response['output']['generic'][0]['text'] return watson_reply, session_id
3. 完整流程示例
整合语音转文本与Watson对接的完整代码:
# 替换为你实际的语音转文本实现 def speech_to_text(): # 模拟语音转换结果:"I need my bank account info" return "I need my bank account info" def main(): # 1. 执行语音转文本 user_text = speech_to_text() if not user_text: print("语音转文本失败,请重试") return # 2. 对接Watson获取回复 try: reply, session_id = get_watson_response(user_text) print(f"Watson Assistant回复:{reply}") except Exception as e: print(f"对接Watson失败:{str(e)}") if __name__ == "__main__": main()
4. 关键注意事项
- 多轮对话支持:如果需要连续对话,需保存每次返回的
session_id,后续调用时传入以保留对话上下文 - 错误处理:通过try-except捕获API调用异常(如网络超时、凭据无效等)
- 凭据安全:使用
.env文件存储敏感信息,并将该文件加入.gitignore避免泄露
内容的提问来源于stack exchange,提问作者MAH
相关产品推荐
相关产品推荐

