跳到内容

使用 OpenAI 进行音频信息提取

本示例展示如何使用 Instructor 结合 OpenAI 的音频能力,从音频文件中提取结构化信息。示例展示了如何处理音频输入并将特定字段提取到 Pydantic 模型中。

先决条件

  • 具有访问 GPT-4 音频模型权限的 OpenAI API 密钥
  • 一个 WAV 格式的音频文件
  • 已安装并支持 OpenAI 的 Instructor 库

代码示例

from openai import OpenAI
from pydantic import BaseModel
import instructor
from instructor.multimodal import Audio
import base64

# Initialize the OpenAI client with Instructor
client = instructor.from_openai(OpenAI())

# Define the structure for extracted information
class Person(BaseModel):
    name: str
    age: int

# Read and encode the audio file
with open("./output.wav", "rb") as f:
    encoded_string = base64.b64encode(f.read()).decode("utf-8")

# Extract information from the audio
resp = client.chat.completions.create(
    model="gpt-4-audio-preview",
    response_model=Person,
    modalities=["text"],
    audio={"voice": "alloy", "format": "wav"},
    messages=[
        {
            "role": "user",
            "content": [
                "Extract the following information from the audio",
                Audio.from_path("./output.wav"),
            ],
        },
    ],
)

print(resp)
# Example output: Person(name='Jason', age=20)

工作原理

  1. 首先,我们导入所需的库,包括来自 instructor.multimodalAudio 类。

  2. 我们定义了一个 Pydantic 模型 Person,用于指定我们想要从音频中提取的信息结构

  3. name:人物姓名
  4. age:人物年龄

  5. 音频文件被读取并以 base64 格式编码。

  6. 我们使用 OpenAI 具有音频能力的模型来处理音频并提取指定信息

  7. model 参数指定了 GPT-4 音频模型
  8. response_model 告诉 Instructor 根据我们的 Person 模型构建输出结构
  9. modalities 指定我们想要文本输出
  10. audio 参数配置音频特定设置
  11. 在消息中,我们使用 Audio.from_path() 来包含音频文件

  12. 响应会被自动解析到我们的 Pydantic 模型中,使得提取的信息可以轻松地以结构化格式访问。

用例

这种模式尤其适用于

  • 转录和提取录音采访中的信息
  • 处理语音消息或音频笔记
  • 从语音输入自动填充表格
  • 基于语音的数据输入系统

提示

  • 确保您的音频文件是支持的格式(本示例中是 WAV)
  • 音频模型在语音清晰且背景噪音最小的情况下效果最好
  • 考虑音频文件的长度,因为模型可能有特定的限制
  • 构建您的 Pydantic 模型,使其与您期望提取的信息相匹配