Type something to search...
如何使用 Google DeepMind Gemini 2.0 Flash Live API 进行实时对话

如何使用 Google DeepMind Gemini 2.0 Flash Live API 进行实时对话

Google DeepMind 的 Gemini 2.0 Flash API 代表了实时 AI 驱动对话领域的重大突破。它使开发者能够构建能够无缝处理实时音频交互的应用程序,提供了语音输入和输出的无与伦比的集成。无论您是在创建客户服务聊天机器人、增强无障碍工具,还是开发互动 AI 导师,这个 API 都是一个强大的基础。在本博客中,我们将探讨 Gemini 2.0 Flash API 的功能,并演示如何有效地使用 Python。我们将通过两个不同的脚本 live_test.pyno_queue_version.py 逐步指导您实施,帮助您开始构建动态对话 AI 解决方案。

在我们继续之前,让我们保持联系!请考虑在 Medium 上关注我,并不要忘记在 LinkedIn 上与我连接,以定期获取数据科学和深度学习的见解。” 🚀📊🤖

前提条件

  1. API 密钥: 通过在 Google AI Platform 上注册以获取访问权限来获取您的 Google Gemini API 密钥。
  2. Python 环境: 确保安装了 Python 3.8+。
  3. 依赖项: 安装所需的库:
pip install websockets pyaudio asyncio

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

export GEMINI_API_KEY="your_api_key_here"

脚本的主要特征

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

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

共享组件

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

live_test.py 的逐步解释

初始化

class GeminiVoice:
    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 的访问。
  • 音频设置: 设置输入和输出参数。

开始连接

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

捕获音频

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

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

流音频

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

播放响应

async def play_response(self):
    audio = pyaudio.PyAudio()
    stream = audio.open(
        format=self.FORMAT, channels=self.CHANNELS, rate=24000, output=True
    )
    while True:
        data = await self.audio_queue.get()
        await asyncio.to_thread(stream.write, data)
  • 音频播放: 播放AI生成的音频。

no_queue_version.py 的逐步解释

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

主要区别

  • 简化的响应处理:
async def recv_model_audio(self):
    audio = pyaudio.PyAudio()
    stream = audio.open(
        format=self.FORMAT, channels=self.CHANNELS, rate=24000, output=True
    )
    async for msg in self.ws:
        response = json.loads(msg)
        try:
            audio_data = response["serverContent"]["modelTurn"]["parts"][0]["inlineData"]["data"]
            await asyncio.to_thread(stream.write, base64.b64decode(audio_data))
        except KeyError:
            pass

运行脚本

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

2. 运行脚本:

python live_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 创意变为现实!

Related Posts

使用 ChatGPT 搜索网络功能的 10 种创意方法

使用 ChatGPT 搜索网络功能的 10 种创意方法

例如,提示和输出 你知道可以使用 ChatGPT 的“搜索网络”功能来完成许多任务,而不仅仅是基本的网络搜索吗? 对于那些不知道的人,ChatGPT 新的“搜索网络”功能提供实时信息。 截至撰写此帖时,该功能仅对使用 ChatGPT 4o 和 4o-mini 的付费会员开放。 ![](https://images.weserv.nl/?url=https://cdn-im

阅读更多
在人工智能和技术领域保持领先地位的 10 项必学技能 📚

在人工智能和技术领域保持领先地位的 10 项必学技能 📚

在人工智能和科技这样一个动态的行业中,保持领先意味着不断提升你的技能。无论你是希望深入了解人工智能模型性能、掌握数据分析,还是希望通过人工智能转变传统领域如法律,这些课程都是你成功的捷径。以下是一个精心策划的高价值课程列表,可以助力你的职业发展,并让你始终处于创新的前沿。 1. 生成性人工智能简介课程: [生成性人工智能简介](https://genai.works

阅读更多
10 个强大的 Perplexity AI 提示,让您的营销任务自动化

10 个强大的 Perplexity AI 提示,让您的营销任务自动化

在当今快速变化的数字世界中,营销人员总是在寻找更智能的方法来简化他们的工作。想象一下,有一个个人助理可以为您创建受众档案,建议营销策略,甚至为您撰写广告文案。这听起来像是一个梦想? 多亏了像 Perplexity 这样的 AI 工具,这个梦想现在成为现实。通过正确的提示,您可以将 AI 转变为您的 个人营销助理。在本文中,我将分享 10 个强大的提示,帮助您自动

阅读更多
10+ 面向 UI/UX 设计师的顶级 ChatGPT 提示

10+ 面向 UI/UX 设计师的顶级 ChatGPT 提示

人工智能技术,如机器学习、自然语言处理和数据分析,正在重新定义传统设计方法。从自动化重复任务到实现个性化用户体验,人工智能使设计师能够更加专注于战略思维和创造力。随着这一趋势的不断增长,UI/UX 设计师越来越多地采用 AI 驱动的工具来促进他们的工作。利用人工智能不仅能提供基于数据的洞察,还为满足多样化用户需求的创新设计解决方案开辟了机会。 1. 用户角色开发 目的

阅读更多
在几分钟内完成数月工作的 100 种人工智能工具

在几分钟内完成数月工作的 100 种人工智能工具

人工智能(AI)的快速发展改变了企业的运作方式,使人们能够在短短几分钟内完成曾经需要几周或几个月的任务。从内容创作到网站设计,AI工具帮助专业人士节省时间,提高生产力,专注于创造力。以下是按功能分类的100个AI工具的全面列表,以及它们在现实世界中的使用实例。 1. 研究工具 研究可能耗时,但人工智能工具使查找、分析和组织数据变得更加容易。**ChatGPT, Cop

阅读更多
你从未知道的 17 个令人惊叹的 GitHub 仓库

你从未知道的 17 个令人惊叹的 GitHub 仓库

Github 隐藏的宝石!! 立即收藏的代码库 学习编程相对简单,但掌握编写更好代码的艺术要困难得多。GitHub 是开发者的宝藏,那里“金子”是其他人分享的精心编写的代码。通过探索 GitHub,您可以发现如何编写更清晰的代码,理解高质量代码的样子,并学习成为更熟练开发者的基本步骤。 1. notwaldorf/emoji-translate *谁需

阅读更多