Podcast Generation with Microsoft Foundry
2026-03-31
新闻来源:网淘吧
围观:24
电脑广告
手机广告
使用GPT实时迷你版生成播客
利用Azure OpenAI实时API将文本内容转换为真实音频叙述
快速开始
- 为实时API配置环境变量
- 通过WebSocket连接到Azure OpenAI实时端点
- 发送文本提示,收集PCM音频块和转录文本
- 将PCM转换为WAV格式
- 将Base64编码的音频返回至前端进行播放
环境配置
AZURE_OPENAI_AUDIO_API_KEY=your_realtime_api_key
AZURE_OPENAI_AUDIO_ENDPOINT=https://your-resource.cognitiveservices.azure.com
AZURE_OPENAI_AUDIO_DEPLOYMENT=gpt-realtime-mini
注意:端点不应包含/openai/v1/- 只需基础URL。

核心工作流程
后端音频生成
from openai import AsyncOpenAI
import base64
# Convert HTTPS endpoint to WebSocket URL
ws_url = endpoint.replace("https://", "wss://") + "/openai/v1"
client = AsyncOpenAI(
websocket_base_url=ws_url,
api_key=api_key
)
audio_chunks = []
transcript_parts = []
async with client.realtime.connect(model="gpt-realtime-mini") as conn:
# Configure for audio-only output
await conn.session.update(session={
"output_modalities": ["audio"],
"instructions": "You are a narrator. Speak naturally."
})
# Send text to narrate
await conn.conversation.item.create(item={
"type": "message",
"role": "user",
"content": [{"type": "input_text", "text": prompt}]
})
await conn.response.create()
# Collect streaming events
async for event in conn:
if event.type == "response.output_audio.delta":
audio_chunks.append(base64.b64decode(event.delta))
elif event.type == "response.output_audio_transcript.delta":
transcript_parts.append(event.delta)
elif event.type == "response.done":
break
# Convert PCM to WAV (see scripts/pcm_to_wav.py)
pcm_audio = b''.join(audio_chunks)
wav_audio = pcm_to_wav(pcm_audio, sample_rate=24000)
前端音频播放
// Convert base64 WAV to playable blob
const base64ToBlob = (base64, mimeType) => {
const bytes = atob(base64);
const arr = new Uint8Array(bytes.length);
for (let i = 0; i < bytes.length; i++) arr[i] = bytes.charCodeAt(i);
return new Blob([arr], { type: mimeType });
};
const audioBlob = base64ToBlob(response.audio_data, 'audio/wav');
const audioUrl = URL.createObjectURL(audioBlob);
new Audio(audioUrl).play();
语音选项
| 语音 | 特性 |
|---|---|
| 合金 | 中性 |
| 回声 | 温暖 |
| 寓言 | 富有表现力 |
| 玛瑙 | 深沉 |
| 新星 | 友好 |
| 微光 | 清晰 |
实时API事件
response.output_audio.delta- Base64音频片段response.output_audio_transcript.delta- 转录文本response.done- 生成完成错误- 处理方式event.error.message
音频格式
- 输入: 文本提示
- 输出: PCM音频(24kHz,16位,单声道)
- 存储: Base64编码的WAV
参考文献
- 完整架构:详见references/architecture.md以获取完整技术栈设计
- 代码示例:详见references/code-examples.md以获取生产环境模式
- PCM格式转换:使用scripts/pcm_to_wav.py进行音频格式转换
文章底部电脑广告
手机广告位-内容正文底部


微信扫一扫,打赏作者吧~