返回顶部
热门问答 更多热门问答
技术文章 更多技术文章

打造实时对话应用的秘密武器!Google DeepMind Gemini 2.0 Flash API使用全攻略

[复制链接]
链载Ai 显示全部楼层 发表于 8 小时前 |阅读模式 打印 上一主题 下一主题
ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;color: rgb(63, 63, 63);">

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;letter-spacing: 0.1em;color: rgb(63, 63, 63);">Google DeepMind 的 Gemini 2.0 Flash API 代表了实时 AI 驱动对话领域的重大突破。它使开发者能够构建能够无缝处理实时音频交互的应用程序,提供了语音输入和输出的无与伦比的集成。无论您是在创建客户服务聊天机器人、增强无障碍工具,还是开发互动 AI 导师,这个 API 都是一个强大的基础。在本博客中,我们将探讨 Gemini 2.0 Flash API 的功能,并演示如何有效地使用 Python。我们将通过两个不同的脚本ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 12.6px;text-align: left;line-height: 1.75;color: rgb(221, 17, 68);background: rgba(27, 31, 35, 0.05);padding: 3px 5px;border-radius: 4px;">live_test.pyingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 12.6px;text-align: left;line-height: 1.75;color: rgb(221, 17, 68);background: rgba(27, 31, 35, 0.05);padding: 3px 5px;border-radius: 4px;">no_queue_version.py逐步指导您实施,帮助您开始构建动态对话 AI 解决方案。

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;letter-spacing: 0.1em;color: rgb(63, 63, 63);">在我们继续之前,让我们保持联系!请考虑在ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);">Medium上关注我,并不要忘记在LinkedIn[1]上与我连接,以定期获取数据科学和深度学习的见解。” ???

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;display: table;padding: 0.3em 1em;color: rgb(255, 255, 255);background: rgb(15, 76, 129);border-radius: 8px;box-shadow: rgba(0, 0, 0, 0.1) 0px 4px 6px;">前提条件

    ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;color: rgb(63, 63, 63);" class="list-paddingleft-1">
  1. ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 14px;text-indent: -1em;display: block;margin: 0.5em 8px;color: rgb(63, 63, 63);">
    1.ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);">API 密钥:通过在 Google AI Platform 上注册以获取访问权限来获取您的 Google Gemini API 密钥。
  2. 2.Python 环境:确保安装了 Python 3.8+。
  3. 3.依赖项:安装所需的库:
pipinstallwebsocketspyaudioasyncio

4.环境变量:将 API 密钥设置为环境变量:

exportGEMINI_API_KEY="your_api_key_here"

脚本的主要特征

两个脚本都实现了实时语音交互,但在方法上略有不同:

  • live_test.py:使用音频队列来管理和播放接收到的音频数据。
  • no_queue_version.py:直接播放接收到的音频,没有队列,简化了过程。

共享组件

  • WebSocket 连接:促进与 Gemini API 的通信。
  • 音频捕获:使用 PyAudio 记录用户输入。
  • 音频播放:将 AI 生成的响应流回用户。

live_test.py 的逐步解释

初始化

classGeminiVoice:
def__init__(self):
self.audio_queue = asyncio.Queue()
self.api_key = os.environ.get("GEMINI_API_KEY")
self.model ="gemini-2.0-flash-exp"
self.uri =f"wss://generativelanguage.googleapis.com/ws/google.ai.generativelanguage.v1alpha.GenerativeService.BidiGenerateContent?key={self.api_key}"
self.FORMAT = pyaudio.paInt16
self.CHANNELS =1
self.CHUNK =512
self.RATE =16000
  • 音频队列:存储接收到的音频块以供播放。
  • API 密钥和模型:配置对 Gemini API 的访问。
  • 音频设置:设置输入和输出参数。

开始连接

asyncdefstart(self):
self.ws =awaitconnect(
self.uri, additional_headers={"Content-Type":"application/json"}
)
awaitself.ws.send(json.dumps({"setup": {"model":f"models/{self.model}"}}))
awaitself.ws.recv(decode=False)
print("Connected to Gemini, You can start talking now")
asyncwithasyncio.TaskGroup()astg:
tg.create_task(self.capture_audio())
tg.create_task(self.stream_audio())
tg.create_task(self.play_response())
  • WebSocket 连接:建立与 Gemini 服务的链接。
  • 任务组:并发管理音频捕获、流式传输和播放。

捕获音频

asyncdefcapture_audio(self):
audio = pyaudio.PyAudio()
stream = audio.open(
format=self.FORMAT,
channels=self.CHANNELS,
rate=self.RATE,
input=True,
frames_per_buffer=self.CHUNK,
)

whileTrue:
data =awaitasyncio.to_thread(stream.read,self.CHUNK)
awaitself.ws.send(
json.dumps(
{
"realtime_input": {
"media_chunks": [
{
"data": base64.b64encode(data).decode(),
"mime_type":"audio/pcm",
}
]
}
}
)
)
  • 音频录制:捕获来自麦克风的输入并将其发送到API。

流音频

asyncdefstream_audio(self):
asyncformsginself.ws:
response = json.loads(msg)
try:
audio_data = response["serverContent"]["modelTurn"]["parts"][0]["inlineData"]["data"]
self.audio_queue.put_nowait(base64.b64decode(audio_data))
exceptKeyError:
pass
  • 响应处理:解码来自API的音频响应并将其存储在队列中。

播放响应

asyncdefplay_response(self):
audio = pyaudio.PyAudio()
stream = audio.open(
format=self.FORMAT, channels=self.CHANNELS, rate=24000, output=True
)
whileTrue:
data =awaitself.audio_queue.get()
awaitasyncio.to_thread(stream.write, data)
  • 音频播放:播放AI生成的音频。

no_queue_version.py 的逐步解释

no_queue_version.py脚本通过直接流式传输和播放接收到的音频,简化了这一过程,而无需中间队列。

主要区别

  • 简化的响应处理:
asyncdefrecv_model_audio(self):
audio = pyaudio.PyAudio()
stream = audio.open(
format=self.FORMAT, channels=self.CHANNELS, rate=24000, output=True
)
asyncformsginself.ws:
response = json.loads(msg)
try:
audio_data = response["serverContent"]["modelTurn"]["parts"][0]["inlineData"]["data"]
awaitasyncio.to_thread(stream.write, base64.b64decode(audio_data))
exceptKeyError:
pass

运行脚本

  1. 1.设置环境变量:
exportGEMINI_API_KEY="your_api_key_here"

2.运行脚本:

pythonlive_test.py

3.对着麦克风说话:脚本捕获您的输入,将其发送到Gemini服务,并播放AI的响应。

结论

使用 Google DeepMind Gemini 2.0 Flash API,您可以构建支持动态和实时对话的创新应用程序。这项尖端技术实现了无缝的音频交互,非常适合客户支持、互动教程和语言学习等多种用例。

通过选择live_test.py以获得高级排队功能或no_queue_version.py以实现简单性,开发人员可以根据具体需求定制 API 集成。

API 的强大功能结合 Python 的灵活性,使得创建高度互动和响应迅速的应用程序成为可能。花时间探索脚本,尝试自定义选项,释放 AI 驱动通信的全部潜力。可能性是巨大的,借助 Gemini 2.0 Flash,您可以将最雄心勃勃的对话 AI 创意变为现实

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

链载AI是专业的生成式人工智能教程平台。提供Stable Diffusion、Midjourney AI绘画教程,Suno AI音乐生成指南,以及Runway、Pika等AI视频制作与动画生成实战案例。从提示词编写到参数调整,手把手助您从入门到精通。
  • 官方手机版

  • 微信公众号

  • 商务合作

  • Powered by Discuz! X3.5 | Copyright © 2025-2025. | 链载Ai
  • 桂ICP备2024021734号 | 营业执照 | |广西笔趣文化传媒有限公司|| QQ