当前位置:   article > 正文

使用语音识别、ChatGpt、文心一言进行交互_样让文心一言或者gpt变成语音交互

样让文心一言或者gpt变成语音交互

通过调用百度语音识别的api接口进行语音识别,然后将识别到内容发送给chatgpt以及文心一言的api接口进行交互,实现该功能。

要实现这个功能,首先需要申请百度语音识别的API接口,并进行相关配置。然后编写代码,利用百度语音识别的API接口对语音进行识别,获取识别到的文本内容

接着,需要调用ChatGPT和文心一言的API接口,将识别到的文本内容发送给这两个接口进行交互。这样就可以实现将语音内容转换成文本后,再通过人工智能模型进行进一步处理和生成相关回复。

在具体实现过程中,需要注意处理API接口的请求和响应,并确保数据的安全性和准确性。

总的来说,通过调用百度语音识别的API接口进行语音识别,并与ChatGPT和文心一言的API接口进行交互,可以实现一个智能化的语音交互系统,提供更加便捷和个性化的服务体验。

百度语音识别api的调用

1、首先去百度AI开放平台-全球领先的人工智能服务平台申请语音识别的API_ID以及API_SECRET。

71de314db6e849e98e00ce8104fc86bf.png

 2、根据官方的API调用示例,调取语音识别的接口。

  1. import requests
  2. import json
  3. from urllib.request import urlopen
  4. from urllib.request import Request
  5. from urllib.error import URLError
  6. from urllib.parse import urlencode
  7. API_KEY = "自己的"
  8. SECRET_KEY = "自己的"
  9. #获取百度语音token
  10. def get_access_token():
  11. """
  12. 使用 AK,SK 生成鉴权签名{Access Token)
  13. :return: access_token,或是None(如果错误)
  14. """
  15. url = "https://aip.baidubce.com/oauth/2.0/token"
  16. params = {"grant_type": "client_credentials", "client_id": API_KEY, "client_secret": SECRET_KEY}
  17. return str(requests.post(url, params=params).json().get("access_token"))
  18. #百度语音转文字
  19. def speech_to_text_baidu():
  20. ASR_URL = 'http://vop.baidu.com/server_api'
  21. #要想转换的音频(要想实时转换的话,可以在这行代码前面加入语音采集的代码,保存到/home/lxj/chat_robot/audio.wav,自己的地址)
  22. with open('/home/lxj/chat_robot/audio.wav', 'rb') as f:
  23. audio_data = f.read()
  24. params = {'cuid': "eAfx7sGxI092FxvCuADljopHxiJjruPX", 'token': get_access_token(), 'dev_pid': 1537}#1537代表普通话识别,其他的看官网文档
  25. params_query = urlencode(params)
  26. headers ={
  27. 'Content-Type': 'audio/' + 'wav' + '; rate=' + str(16000),
  28. }
  29. # 请求转换结果
  30. req = Request(ASR_URL + "?" + params_query, audio_data, headers)
  31. try:
  32. f = urlopen(req)
  33. result_str = f.read()
  34. result_str =json.loads(result_str)
  35. result_str = result_str.get("result")[0]
  36. return result_str
  37. except URLError as err:
  38. print('asr http response http code : ' + str(err.code))
  39. result_str = err.read()
  40. print(result_str)

ChatGpt的API调用(需要魔法)

1、首先到OpenAI官网注册账号登陆,申请api_key,一个月5美元的免费额度(够用)。

46968514472840f78f1e029c8387ec5d.png

2、安装openai的pyhon库

pip install openai

3、实现OpenAI的调用(很简单)

  1. import openai
  2. client = OpenAI(api_key=" ")# 请替换为您的API密钥
  3. #Chatgpt
  4. def gpt(data):
  5. try:
  6. # 向GPT发送请求,并获取回复
  7. chat_completion = client.chat.completions.create(
  8. model="gpt-3.5-turbo",
  9. messages=[
  10. {"role": "user", "content": data} # 使用接收到的用户消息
  11. ]
  12. )
  13. except Exception as e:
  14. print(f"发生错误: {e}")
  15. return ""
  16. # 获取GPT的回复
  17. gpt_reply = chat_completion.choices[0].message.content
  18. print("GPT Reply: %s", gpt_reply)

文心一言API的调用

1、到百度AI开放平台-全球领先的人工智能服务平台去申请千帆大模型的API_ID以及API_SECRET。

 2、根据官方的API调用示例,调取语音识别的接口。

  1. import requests
  2. import json
  3. from urllib.request import urlopen
  4. from urllib.request import Request
  5. from urllib.error import URLError
  6. from urllib.parse import urlencode
  7. wx_API_KEY = "自己的"
  8. wx_SECRET_KEY = "自己的"
  9. #获取文心一言token
  10. def get_access_token_wx():
  11. """
  12. 使用 AK,SK 生成鉴权签名(Access Token)
  13. :return: access_token,或是None(如果错误)
  14. """
  15. url = "https://aip.baidubce.com/oauth/2.0/token"
  16. params = {"grant_type": "client_credentials", "client_id": wx_API_KEY, "client_secret": wx_SECRET_KEY}
  17. return str(requests.post(url, params=params).json().get("access_token"))
  18. def wxyy(data):
  19. url = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/completions?access_token=" + get_access_token_wx()
  20. payload = json.dumps({
  21. "messages":[{
  22. "role": "user",
  23. "content": data
  24. }]
  25. })
  26. headers = {
  27. 'Content-Type': 'application/json'
  28. }
  29. response = requests.request("POST", url, headers=headers, data=payload)
  30. response_json = response.json() # 将响应文本解析为JSON对象
  31. result = response_json.get("result") # 提取result字段的值
  32. print("WX Reply: %s", result)

语音识别、ChatGpt、文心一言结合

        加入了键盘监控事件,当按下键盘enter键时,开始交互。

  1. from pyaudio import PyAudio,paInt16 #导入音频处理库Pyaudio,没有的话要pip 安装
  2. from openai import OpenAI
  3. import threading
  4. import requests
  5. import json
  6. from urllib.request import urlopen
  7. from urllib.request import Request
  8. from urllib.error import URLError
  9. from urllib.parse import urlencode
  10. from pynput.keyboard import Listener, Key
  11. import speech_recognition as sr
  12. # 创建一个锁对象
  13. lock = threading.Lock()
  14. ######################百度语音############3############
  15. API_KEY = ""
  16. SECRET_KEY = ""
  17. ####################文心一言############################
  18. wx_API_KEY = ""
  19. wx_SECRET_KEY = ""
  20. #######################################################
  21. #Chatgpt
  22. def gpt(data):
  23. try:
  24. # 向GPT发送请求,并获取回复
  25. chat_completion = client.chat.completions.create(
  26. model="gpt-3.5-turbo",
  27. messages=[
  28. {"role": "user", "content": data} # 使用接收到的用户消息
  29. ]
  30. )
  31. except Exception as e:
  32. print(f"发生错误: {e}")
  33. return ""
  34. # 获取GPT的回复
  35. gpt_reply = chat_completion.choices[0].message.content
  36. print("GPT Reply: %s", gpt_reply)
  37. #获取百度语音token
  38. def get_access_token():
  39. """
  40. 使用 AK,SK 生成鉴权签名{Access Token)
  41. :return: access_token,或是None(如果错误)
  42. """
  43. url = "https://aip.baidubce.com/oauth/2.0/token"
  44. params = {"grant_type": "client_credentials", "client_id": API_KEY, "client_secret": SECRET_KEY}
  45. return str(requests.post(url, params=params).json().get("access_token"))
  46. #获取文心一言token
  47. def get_access_token_wx():
  48. """
  49. 使用 AK,SK 生成鉴权签名(Access Token)
  50. :return: access_token,或是None(如果错误)
  51. """
  52. url = "https://aip.baidubce.com/oauth/2.0/token"
  53. params = {"grant_type": "client_credentials", "client_id": wx_API_KEY, "client_secret": wx_SECRET_KEY}
  54. return str(requests.post(url, params=params).json().get("access_token"))
  55. def wx(data):
  56. url = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/completions?access_token=" + get_access_token_wx()
  57. payload = json.dumps({
  58. "messages":[{
  59. "role": "user",
  60. "content": data
  61. }]
  62. })
  63. headers = {
  64. 'Content-Type': 'application/json'
  65. }
  66. response = requests.request("POST", url, headers=headers, data=payload)
  67. response_json = response.json() # 将响应文本解析为JSON对象
  68. result = response_json.get("result") # 提取result字段的值
  69. print("WX Reply: %s", result)
  70. #百度语音转文字
  71. def speech_to_text_baidu():
  72. ASR_URL = 'http://vop.baidu.com/server_api'
  73. # 初始化识别器
  74. recognizer = sr.Recognizer()
  75. # 初始化识别器
  76. recognizer = sr.Recognizer()
  77. with sr.Microphone() as source:
  78. print("请说话...")
  79. audio = recognizer.listen(source)
  80. audio_data = audio.get_wav_data(convert_rate=16000, convert_width=2)
  81. params = {'cuid': "eAfx7sGxI092FxvCuADljopHxiJjruPX", 'token': get_access_token(), 'dev_pid': 1537}
  82. params_query = urlencode(params)
  83. headers ={
  84. 'Content-Type': 'audio/' + 'wav' + '; rate=' + str(16000),
  85. }
  86. # 请求转换结果
  87. req = Request(ASR_URL + "?" + params_query, audio_data, headers)
  88. try:
  89. f = urlopen(req)
  90. result_str = f.read()
  91. result_str =json.loads(result_str)
  92. result_str = result_str.get("result")[0]
  93. return result_str
  94. except URLError as err:
  95. print('asr http response http code : ' + str(err.code))
  96. result_str = err.read()
  97. print(result_str)
  98. # 当有键盘被按下时执行的函数
  99. def on_press(key):
  100. if key == Key.enter:
  101. global user_input
  102. user_input = speech_to_text_baidu()
  103. print("语音转换结果:"+user_input)
  104. #gpt(user_input)
  105. wx(user_input)
  106. if key == Key.esc:
  107. print("按了ESC键")
  108. exit(0)
  109. if __name__ == '__main__':
  110. # 初始化OpenAI客户端
  111. client = OpenAI(
  112. api_key="自己的", # 请替换为您的API密钥
  113. )
  114. print("chat启动!")
  115. # 创建键盘监听器
  116. while True:
  117. with Listener(on_press=on_press) as listener:
  118. listener.join()

 

 

 

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/603896
推荐阅读
相关标签
  

闽ICP备14008679号