请检查 API 返回的格式

发布时间:2025-06-24 17:46:23  作者:北方职教升学中心  阅读量:397


所用技术与链接

  • Requests:一个简洁易用的HTTP库,用于发送HTTP请求。 """ recognizer = sr.Recognizer() with sr.Microphone() as source: print("请说出你的消息:") audio = recognizer.listen(source) try: text = recognizer.recognize_google(audio, language='zh-CN') print(f"你说: {text}") return text except sr.UnknownValueError: print("未能识别你的语音。本文将详细介绍如何利用DeepSeek API和gTTS(Google Text-to-Speech)库,构建一个专为推箱子游戏设计的语音助手。通过将助手的回复文本传递给gTTS,生成相应的语音文件,并使用VLC播放器进行播放,实现语音输出。请检查 API 返回的格式。
  • 获取回复:DeepSeek API返回助手的回复内容。

    未来,随着技术的不断进步,可以在此基础上进行更多的功能扩展,如语音输入、

二、
  • macOS:使用afplay命令。
  • 循环交互:持续接收用户输入,处理输入并获取回复。
  • 语音交互:将文本回复转换为语音输出,提升用户体验。
  • 4.定义文本转语音并播放的函数

    def speak(text):    """    使用 gTTS 将文本转换为语音并播放。
  • DeepSeek API:假设为类似于OpenAI的对话生成API,用于获取智能助手的回复。项目介绍

    本项目旨在开发一个语音助手,专门用于辅助推箱子(Sokoban)游戏玩家。所用技术链接、该助手能够实时响应玩家的输入,提供情感支持、

  • 文本转语音:使用gTTS将助手的回复转换为语音文件。") break except Exception as e: print(f"发生错误: {e}")
    • 功能:实现与用户的持续对话,获取用户输入,调用API获取回复,并通过语音播放助手的回复。

    五、
  • 根据当前操作系统选择不同的命令播放音频:
    • Windows:使用start命令。
    • OS:提供与操作系统交互的功能。
    • gTTS (Google Text-to-Speech):一个将文本转换为语音的Python库,支持多种语言。 参数: text (str): 要转换的文本。..."}) while True: # 其余代码保持不变

      4. 丰富的语音反馈

      除了简单的语音播放,可以增加语音的情感色彩,例如使用不同的语速、

    • API_URL: DeepSeek API的端点地址,用于发送对话请求。 """ headers = { "Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json" } payload = { "model": "deepseek-chat", "messages": messages, "stream": False } try: response = requests.post(API_URL, headers=headers, data=json.dumps(payload)) response.raise_for_status() # 检查请求是否成功 data = response.json() # 提取助手的回复内容 assistant_reply = data['choices'][0]['message']['content'].strip() return assistant_reply except requests.exceptions.HTTPError as http_err: print(f"HTTP 错误发生: {http_err}") except requests.exceptions.ConnectionError as conn_err: print(f"连接错误发生: {conn_err}") except requests.exceptions.Timeout as timeout_err: print(f"请求超时: {timeout_err}") except requests.exceptions.RequestException as req_err: print(f"请求异常: {req_err}") except KeyError: print("解析响应时发生错误。游戏策略、在本项目中,我们将用户的文本输入发送给DeepSeek API,并获取助手的回复内容。") except KeyboardInterrupt: print("\n语音助手已关闭。
    • 参数:
      • messages: 包含对话历史的消息列表,格式为字典列表,每个字典包含rolecontent。原理解析
  • 1.DeepSeek API与对话生成

    DeepSeek API提供了一个强大的对话生成模型,能够根据用户的输入生成智能、请稍后再试。") while True: try: user_input = input("请输入你的消息:") if not user_input: continue # 如果没有输入内容,跳过本次循环 # 将用户输入添加到对话历史 messages.append({"role": "user", "content": user_input}) # 获取助手回复 assistant_reply = get_assistant_response(messages) if assistant_reply: print(f"助手: {assistant_reply}") speak(assistant_reply) # 让语音助手通过语音回答 # 将助手回复添加到对话历史 messages.append({"role": "assistant", "content": assistant_reply}) else: print("未能获取助手的回复。

  • Linux及其他:使用cvlc(VLC命令行)播放音频。

    3.项目流程

    1. 用户输入:用户通过命令行输入消息。你的职责包括:提供情感支持,适时建议休息;分享游戏策略和技巧,解释游戏机制;回答知识性问题,提供准确信息;保持积极和支持性,语言通俗易懂;分享有趣的知识,增加趣味性。

      欢迎大家在实际项目中尝试并优化该助手,根据需求进行个性化定制,打造更加智能和贴心的游戏伴玩助手!

  • 通过项目介绍、
  • 返回值:助手的回复内容字符串。

    def speak(text):    """    使用 gTTS 将文本转换为语音并播放。希望本文能够为有志于开发智能语音助手的开发者提供有价值的参考与指导。
  • 发送请求:程序将用户输入的消息发送给DeepSeek API,并附带对话历史。
  • 2.配置API密钥与端点

    # 硬编码 API 密钥API_KEY = "sk-xxxxxxxxxxxxxxxxxxxxxxxxxx" #官网免费申请# 设置自定义 API 端点API_URL = "https://api.deepseek.com/v1/chat/completions"
    • API_KEY: 用于身份验证的API密钥,请替换为实际的有效密钥。 """ tts = gTTS(text, lang='zh-cn', slow=False) # 设置语速为正常 tts.save("output.mp3") # 播放方式同上

      5. 集成图形用户界面(GUI)

      为语音助手添加一个图形用户界面,使用如Tkinter或PyQt等Python GUI库,提供更友好的用户交互界面,显示对话内容和语音播放状态。

    • 解释游戏机制:详细说明推箱子游戏的规则和机制。 参数: text (str): 要转换的文本。强制要求为回答简洁简短,字数少一点"} ] # print("语音助手已启动!") # print("按下 Ctrl+C 退出。原理解析、") except KeyboardInterrupt: print("\n语音助手已关闭。") return None
      • 功能:向DeepSeek API发送包含对话历史的消息列表,并获取助手的回复。
      • 四、

    5.定义主函数

    def main():    # 初始化对话历史    messages = [        {"role": "system", "content": "你是一位亲切且知识渊博的推箱子游戏伴玩助手。你的职责包括:提供情感支持,适时建议休息;分享游戏策略和技巧,解释游戏机制;回答知识性问题,提供准确信息;保持积极和支持性,语言通俗易懂;分享有趣的知识,增加趣味性。

    2.gTTS语音合成

    gTTS(Google Text-to-Speech)库能够将文本转换为语音。项目拓展

    1. 增加语音输入功能

    当前项目依赖于用户通过键盘输入消息,未来可以集成语音输入功能,使用如SpeechRecognition库,将用户的语音输入转换为文本,进一步提升交互体验。

  • gTTS: 将文本转换为语音。请根据用户的输入,适时切换角色,提供相应的帮助和信息。 """ tts = gTTS(text, lang='zh-cn') # 设置语言为中文 tts.save("output.mp3") system = platform.system() if system == "Windows": os.system("start output.mp3") elif system == "Darwin": # macOS os.system("afplay output.mp3") else: # 其他系统(假设为Linux) os.system("cvlc --rate=1.0 --play-and-exit --quiet output.mp3")
  • 3. 对话历史管理

    引入对话历史的管理功能,例如限制对话历史的长度,定期清理过旧的消息,确保API请求的效率和响应速度。该项目不仅提升了游戏的互动性和用户体验,还为进一步探索语音交互技术提供了良好的基础。 参数: text (str): 要转换的文本。请检查 API 返回的格式。

  • platform: 获取当前操作系统信息(在本代码中未使用,但可用于扩展功能)。") return "" except sr.RequestError as e: print(f"语音识别服务出错: {e}") return ""

    2. 多平台兼容性优化

    根据不同操作系统的特性,优化音频播放方式,确保在所有主流操作系统上都能顺利播放语音。 参数: messages (list): 包含对话历史的消息列表。同时,助手具备语音输出功能,使互动更加自然和便捷。结语

    通过本文的介绍与代码讲解,读者可以了解到如何利用DeepSeek API和gTTS构建一个功能丰富的语音助手,专门用于推箱子游戏的辅助。

  • Platform:用于获取当前操作系统的信息。

    import speech_recognition as srdef listen():    """    监听用户的语音输入并转换为文本。    参数:        text (str): 要转换的文本。
  • 添加对话历史:将用户输入和助手回复依次添加到对话历史中,确保上下文的连贯性。如果发生错误,返回None
  • 实现细节:
    • 使用gTTS将文本转换为中文语音,并保存为output.mp3。可以使用环境变量或配置文件来管理敏感信息。
    • 播放语音:使用VLC播放器播放生成的语音文件,向用户反馈。
    • 参数:
      • text: 要转换为语音的文本内容。
      • 回答知识性问题:解答与游戏相关的各类问题。
      • 分享游戏策略和技巧:提供优化游戏进程的建议。

      3.定义获取助手回复的函数

      def get_assistant_response(messages):    """    向 DeepSeek API 发送请求并获取助手回复。代码详细讲解以及项目拓展,帮助读者全面了解该项目的实现过程。

      主要功能包括:

      • 情感支持与建议休息:在长时间游戏后,提醒玩家适时休息。丰富的语音反馈和图形用户界面等。游戏机制解释以及知识性问答。

        在现代游戏体验中,语音助手的应用能够显著提升用户的互动感和便利性。 """ headers = { "Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json" } payload = { "model": "deepseek-chat", "messages": messages, "stream": False } try: response = requests.post(API_URL, headers=headers, data=json.dumps(payload)) response.raise_for_status() # 检查请求是否成功 data = response.json() # 提取助手的回复内容 assistant_reply = data['choices'][0]['message']['content'].strip() return assistant_reply except requests.exceptions.HTTPError as http_err: print(f"HTTP 错误发生: {http_err}") except requests.exceptions.ConnectionError as conn_err: print(f"连接错误发生: {conn_err}") except requests.exceptions.Timeout as timeout_err: print(f"请求超时: {timeout_err}") except requests.exceptions.RequestException as req_err: print(f"请求异常: {req_err}") except KeyError: print("解析响应时发生错误。

      • VLC Media Player:一个跨平台的多媒体播放器,用于播放生成的语音文件。

        from collections import dequedef main():    # 初始化对话历史,限制为最近10条消息    messages = deque(maxlen=10)    messages.append({"role": "system", "content": "你是一位亲切且知识渊博的推箱子游戏伴玩助手。
      • json: 处理JSON数据格式,解析API返回的响应。 参数: messages (list): 包含对话历史的消息列表。 """ tts = gTTS(text, lang='zh-cn') # 设置语言为中文 tts.save("output.mp3") # 根据操作系统选择不同的播放方式 system = platform.system() if system == "Windows": os.system("start output.mp3") elif system == "Darwin": # macOS os.system("afplay output.mp3") else: # 其他系统(假设为Linux) os.system("cvlc --rate=2.0 --play-and-exit --quiet output.mp3")
      • 功能:将助手的文本回复转换为语音,并在不同操作系统上播放生成的音频文件。 返回: str: 助手的回复内容。请稍后再试。 """ tts = gTTS(text, lang='zh-cn') # 设置语言为英文 tts.save("output.mp3") #system = platform.system() #os.system("mpg123 output.mp3") os.system("cvlc --rate=2.0 --play-and-exit --quiet output.mp3") def main(): # 初始化对话历史 messages = [ {"role": "system", "content": "你是一位亲切且知识渊博的推箱子游戏伴玩助手。

        import osAPI_KEY = os.getenv("DEEPSEEK_API_KEY")if not API_KEY:    raise ValueError("请设置环境变量 DEEPSEEK_API_KEY")

        七、总代码

        以下是整合后的完整代码,确保所有功能模块协同工作:

        import requestsimport jsonfrom gtts import gTTSimport osimport platform# 硬编码 API 密钥API_KEY = "sk-xxxxxx" #官网免费申请# 设置自定义 API 端点API_URL = "https://api.deepseek.com/v1/chat/completions"def get_assistant_response(messages):    """    向 DeepSeek API 发送请求并获取助手回复。相关且有用的回复。

      6.程序入口

      if __name__ == "__main__":    main()
      • 功能:确保当脚本作为主程序运行时,调用main()函数开始对话循环。代码讲解

        以下是项目的主要代码部分及其详细解释:

        1.导入必要的库

        import requestsimport jsonfrom gtts import gTTSimport osimport platform
        • requests: 用于发送HTTP请求,与DeepSeek API通信。

          def speak(text):    """    使用 gTTS 将文本转换为语音并播放。技巧分享、

        三、") return Nonedef speak(text): """ 使用 gTTS 将文本转换为语音并播放。多平台兼容、音调,或者结合情感识别,调整语音输出的风格,使互动更加生动。

        import tkinter as tkdef create_gui():    root = tk.Tk()    root.title("推箱子游戏语音助手")    text_display = tk.Text(root, height=20, width=50)    text_display.pack()    entry = tk.Entry(root, width=50)    entry.pack()    def send_message(event=None):        user_input = entry.get()        if user_input:            text_display.insert(tk.END, f"你: {user_input}\n")            # 发送到API并获取回复            # 显示并播放回复            entry.delete(0, tk.END)    entry.bind("<Return>", send_message)    root.mainloop()if __name__ == "__main__":    create_gui()

        6. 安全性与隐私保护

        确保API密钥的安全存储,避免硬编码在代码中。") break except Exception as e: print(f"发生错误: {e}")if __name__ == "__main__": main()

        六、

      • 错误处理:捕捉并打印各种HTTP和解析错误,确保程序的健壮性。强制要求为回答简洁简短,字数少一点"} ] while True: try: user_input = input("请输入你的消息:") if not user_input: continue # 如果没有输入内容,跳过本次循环 # 将用户输入添加到对话历史 messages.append({"role": "user", "content": user_input}) # 获取助手回复 assistant_reply = get_assistant_response(messages) if assistant_reply: print(f"助手: {assistant_reply}") speak(assistant_reply) # 让语音助手通过语音回答 # 将助手回复添加到对话历史 messages.append({"role": "assistant", "content": assistant_reply}) else: print("未能获取助手的回复。
      • 异常处理:捕捉键盘中断(Ctrl+C)以优雅地退出程序,处理其他可能的异常。

        一、请根据用户的输入,适时切换角色,提供相应的帮助和信息。

      • 实现步骤:
        1. 初始化对话历史:设置系统角色,定义助手的职责和行为规范。
        2. os: 与操作系统交互,如执行系统命令播放音频。 返回: str: 助手的回复内容。