EN

OpenAI Whisper API:在应用中集成语音识别的完整指南

使用 OpenAI Whisper API 为任何应用添加准确的语音转文字功能

返回教程列表🌐 Read in English
进阶14 分钟

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 sf

def 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 AudioSegment

def 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 种语言的用户,无需单独的语言特定模型。

质量提示

  • 16kHz 单声道音频效果最佳(Whisper 原生格式)
  • 使用 verbose_json 格式检测并处理低置信度片段
  • 对于专业词汇(医学、法律、技术),使用 prompt 参数提供上下文
  • 背景噪音会显著影响准确性——考虑进行降噪预处理
  • 相关工具

    OpenAI WhisperOpenAIPython