OpenAI Whisper API:在应用中集成语音识别的完整指南
使用 OpenAI Whisper API 为任何应用添加准确的语音转文字功能
OpenAI Whisper API:在应用中集成语音识别的完整指南
使用 OpenAI Whisper API 为任何应用添加准确的语音转文字功能
集成 OpenAI Whisper 进行语音识别的完整指南:API 设置、语言检测、翻译、实时流式传输、成本优化以及处理音频质量问题。
OpenAI Whisper API:完整集成指南
Whisper 的功能
Whisper 以最先进的准确度将音频转录为文本。支持 57 种语言,并可直接将非英语音频翻译成英语文本。
成本:每分钟 $0.006——对于大多数用例来说非常实惠。
基本设置
python
from openai import OpenAI
client = OpenAI(api_key='your-key')转录音频文件
with open('meeting.mp3', 'rb') as audio_file:
transcript = client.audio.transcriptions.create(
model='whisper-1',
file=audio_file
)
print(transcript.text)
语言检测与翻译
python
自动检测语言
transcript = client.audio.transcriptions.create(
model='whisper-1',
file=audio_file,
response_format='verbose_json' # 包含检测到的语言
)
print(f'语言: {transcript.language}')
print(f'文本: {transcript.text}')将非英语翻译为英语
translation = client.audio.translations.create(
model='whisper-1',
file=spanish_audio
)
print(translation.text) # 始终输出英语
时间戳与分段
python
transcript = client.audio.transcriptions.create(
model='whisper-1',
file=audio_file,
response_format='verbose_json',
timestamp_granularities=['segment', 'word'] # 同时获取段落和单词时间戳
)for segment in transcript.segments:
print(f'[{segment.start:.1f}s - {segment.end:.1f}s]: {segment.text}')
成本优化
python
import librosa
import soundfile as sfdef optimize_audio_for_whisper(input_path: str, output_path: str):
# 加载并重采样为 16kHz 单声道(Whisper 原生格式)
audio, sr = librosa.load(input_path, sr=16000, mono=True)
# 修剪静音(对于有长时间停顿的会议,可显著节省成本)
audio_trimmed, _ = librosa.effects.trim(audio, top_db=20)
# 保存为 16-bit PCM WAV(对于短片段,比 MP3 更小)
sf.write(output_path, audio_trimmed, 16000, subtype='PCM_16')
original_duration = librosa.get_duration(filename=input_path)
trimmed_duration = len(audio_trimmed) / 16000
savings = (original_duration - trimmed_duration) / original_duration
print(f'音频减少了 {savings:.1%}')
return output_path
处理大文件
Whisper API 有 25MB 的文件大小限制。对于更长的音频:
python
from pydub import AudioSegmentdef transcribe_long_audio(file_path: str, chunk_minutes: int = 10) -> str:
audio = AudioSegment.from_file(file_path)
chunk_ms = chunk_minutes * 60 * 1000
chunks = [audio[i:i+chunk_ms] for i in range(0, len(audio), chunk_ms)]
transcripts = []
for i, chunk in enumerate(chunks):
chunk_path = f'/tmp/chunk_{i}.mp3'
chunk.export(chunk_path, format='mp3', bitrate='64k')
with open(chunk_path, 'rb') as f:
result = client.audio.transcriptions.create(
model='whisper-1', file=f
)
transcripts.append(result.text)
return ' '.join(transcripts)
实际应用
会议转录: 录制会议,转录,然后使用 GPT-4o 提取行动项和摘要。
客服分析: 转录支持通话,识别常见问题和情感模式。
字幕生成: Whisper 配合单词时间戳可生成准确的 SRT 字幕文件。
多语言支持: 支持 57 种语言的用户,无需单独的语言特定模型。
质量提示
相关工具
相关教程
使用Whisper转录音频文件、会议和实时语音
使用 OpenAI Whisper 和 GPT-4o 构建自动会议转录、说话人分离和智能会议摘要
何时以及如何针对特定领域任务微调大语言模型
大规模运行 Assistants API 的工程指南——线程管理、工具使用、文件处理和成本优化
掌握 GPT-4o 的多模态特性,包括图像分析、音频转录以及用于交互式应用的全新实时流式 API
OpenAI API 模式中的成本与吞吐量权衡——跨 openai 和 python 的批处理对比