Deepgram
综合介绍
Deepgram是一家人工智能公司,其核心业务是为开发者提供语音转文本(Speech-to-Text)的API服务。 它利用深度学习模型,将实时的音频流或者预先录制的音频文件快速、准确地转换成文字。 这项技术不仅仅是简单的听写,它还包含了一系列“音频智能”功能,比如能够自动为转写内容生成摘要、分析说话者的情绪、检测讨论的主题等。 开发者可以通过其API,将这些先进的语音识别和理解功能集成到自己的应用程序或服务中。 Deepgram的目标是让机器能够理解人类的语言,其提供的模型支持多种语言和方言,并且能够在有背景噪音的环境下保持较高的准确率。
功能列表
- 实时语音转录:支持将实时音频流(如来自麦克风的输入)即时转换为文字,延迟极低。
- 预录制音频转录:可以快速处理已有的音频文件,官方宣称转录一小时时长的音频仅需约12秒。
- 高准确度的AI模型:提供多种AI模型,如
Nova-2
,在准确性、速度和成本效益方面表现优越。 - 音频智能分析:除了基础的文字转录,API还提供多项高级分析功能:
- 内容摘要(Summarization):自动为长段对话生成简短的摘要。
- 情绪分析(Sentiment Analysis):识别和分析音频中说话者的情绪。
- 主题检测(Topic Detection):自动识别对话内容涉及的主要话题。
- 意图检测(Intent Detection):分析用户的意图。
- 多语言支持:支持超过30种语言和方言的转录。
- 说话人分离(Diarization):能够在一份音频中区分出不同的说话人,并在文本中进行标注。
- 自定义词汇(Custom Vocabulary):允许用户添加特定的专业术语、产品名称或人名,以提高这些词汇的识别准确率。
- 文本自动格式化:自动对转录出的文本进行格式美化,例如添加标点符号、将数字和日期转换为标准格式等。
使用帮助
Deepgram为开发者提供了强大的语音转文本API,上手使用非常直接。以下是详细的使用步骤和功能操作介绍。
第一步:注册并获取API密钥
要使用Deepgram的服务,首先需要一个API密钥。
- 访问Deepgram的官方网站
https://deepgram.com/
。 - 点击注册按钮(通常是“Sign Up”或“Get Started for Free”)。新用户通常会获得一定额度的免费信用点数,用于测试和开发,无需绑定信用卡。
- 完成注册后,登录到你的账户控制台(Dashboard)。
- 在控制台的“API Keys”部分,你可以找到系统为你生成的默认API密钥,或者你也可以创建一个新的密钥。这个密钥是之后所有API请求的身份凭证,请妥善保管。
第二步:安装Deepgram的开发工具包(SDK)
为了方便开发者集成,Deepgram官方提供了多种编程语言的SDK,例如Python和Node.js。
对于Python开发者:你可以使用pip
来安装Deepgram的Python SDK。打开你的终端或命令行工具,输入以下命令:
pip install deepgram-sdk
对于Node.js开发者:你可以使用npm
来安装相应的SDK:
npm install @deepgram/sdk
第三-步:如何转录预先录制的音频文件
这是最常见的用法,比如转录会议录音、采访音频或播客节目。
使用Python SDK的示例:下面这段代码演示了如何使用Python转录一个存储在网络上的音频文件。
import os
from dotenv import load_dotenv
from deepgram import DeepgramClient, PrerecordedOptions, FileSource
# 加载环境变量(推荐将API密钥存储在.env文件中)
load_dotenv()
# 你的Deepgram API密钥
API_KEY = os.getenv("DEEPGRAM_API_KEY")
# 要转录的音频文件URL
AUDIO_URL = "https://static.deepgram.com/examples/interview_speech-analytics.wav"
def main():
try:
# 1. 初始化Deepgram客户端
deepgram = DeepgramClient(API_KEY)
# 2. 准备请求源数据
payload: FileSource = {
"url": AUDIO_URL,
}
# 3. 配置转录选项
options = PrerecordedOptions(
model="nova-2", # 选择一个模型,nova-2是功能强大的模型
smart_format=True, # 启用智能格式化,自动添加标点等
summarize="v2", # 启用内容摘要功能
diarize=True, # 启用说话人分离功能
)
# 4. 发送API请求
print("正在请求转录...")
response = deepgram.listen.prerecorded.v("1").transcribe_file(payload, options)
# 5. 处理并打印结果
transcript = response.results.channels[0].alternatives[0].transcript
summary = response.results.summary.short
print("\n--- 完整转录文本 ---\n")
print(transcript)
print("\n--- 内容摘要 ---\n")
print(summary)
except Exception as e:
print(f"发生错误: {e}")
if __name__ == "__main__":
main()
代码解释:
DeepgramClient(API_KEY)
: 使用你的API密钥创建一个客户端实例。payload
: 指定你要转录的音频来源。除了URL,你也可以转录本地文件。PrerecordedOptions
: 这是配置转录参数的地方。在这个例子中,我们启用了智能格式化 (smart_format
)、内容摘要 (summarize
) 和说话人分离 (diarize
)。你可以根据需求开启或关闭这些功能。transcribe_file
: 这是发起转录请求的核心方法。response
: API返回的结果是一个JSON对象,包含了详细的转录信息。完整的文本在results.channels[0].alternatives[0].transcript
路径下。如果开启了摘要,摘要内容在results.summary.short
中。
第四步:如何进行实时语音转录
实时转录适用于需要即时反馈的应用,如语音助手、实时会议字幕等。这通常通过WebSocket协议实现。
使用Python SDK的实时转录概念:
import asyncio
from dotenv import load_dotenv
import os
from deepgram import DeepgramClient, LiveTranscriptionEvents, LiveOptions
load_dotenv()
API_KEY = os.getenv("DEEPGRAM_API_KEY")
class TranscriptCollector:
def __init__(self):
self.transcript_parts = []
self.final_transcript_printed = False
def on_message(self, _, transcript, **kwargs):
# 这个函数会在收到最终转录结果时被调用
if transcript.is_final:
self.transcript_parts.append(transcript.channel.alternatives[0].transcript)
# 只有当这是最后一个is_final消息时才打印
if transcript.speech_final and not self.final_transcript_printed:
full_transcript = " ".join(self.transcript_parts)
print(f"最终转录结果: {full_transcript}")
self.final_transcript_printed = True
def on_error(self, _, error, **kwargs):
print(f"发生错误: {error}")
async def main():
try:
# 初始化Deepgram客户端
deepgram = DeepgramClient(API_KEY)
# 创建到Deepgram的实时连接
dg_connection = deepgram.listen.asynclive.v("1")
transcript_collector = TranscriptCollector()
# 注册事件监听器
dg_connection.on(LiveTranscriptionEvents.Transcript, transcript_collector.on_message)
dg_connection.on(LiveTranscriptionEvents.Error, transcript_collector.on_error)
# 配置实时转录选项
options = LiveOptions(model="nova-2", language="en-US", smart_format=True)
await dg_connection.start(options)
# 在这里,你需要一个机制来从麦克风或其他来源获取实时音频数据块,
# 并通过 dg_connection.send(data) 发送出去。
# 此处为示意,实际应用需要实现音频流的捕获。
print("连接已建立,请开始说话...")
# 伪代码:模拟发送音频流
# for audio_chunk in audio_stream:
# await dg_connection.send(audio_chunk)
# 保持连接直到完成
# await asyncio.sleep(30) # 示例:监听30秒
# 结束连接
await dg_connection.finish()
except Exception as e:
print(f"无法连接到Deepgram: {e}")
# if __name__ == "__main__":
# asyncio.run(main()) # 取消注释以运行
代码解释:
- 实时转录使用
asynclive
模式,基于asyncio
库。 - 你需要定义事件处理函数,
on_message
用于处理收到的转录结果,on_error
处理错误。Deepgram会持续发回临时的和最终的(is_final
)转录片段。 dg_connection.start(options)
建立连接,之后你就可以通过dg_connection.send()
持续发送音频数据了。- 这是一个异步过程,非常适合需要低延迟交互的应用。
应用场景
- 呼叫中心分析将客户与客服的通话实时转为文本,然后利用情绪分析、主题检测等功能,自动评估服务质量、识别客户意图和痛点,从而改善客户体验。
- 媒体内容转录与字幕生成快速为播客、采访、在线课程和视频内容生成准确的文字稿和字幕。这不仅让内容更容易被搜索引擎索引,也方便了听障人士的访问。
- 会议记录与协作自动转录会议内容,并通过说话人分离功能区分每个人的发言,生成结构清晰的会议纪要,省去手动整理的麻烦。
- 语音助手与智能设备作为语音控制应用(如智能家居、车载系统)的“耳朵”,将用户的语音指令准确地转换为可执行的文本命令。
- 医疗文书记录帮助医生通过口述记录病患的诊疗信息,自动生成电子病历,减轻医生的文书工作负担。
QA
- Deepgram是什么?Deepgram是一家人工智能公司,它提供一个API平台,核心功能是将语音转换为文本。开发者可以用它来为自己的应用增加语音识别能力。
- Deepgram的转录准确率如何?Deepgram以其高准确性而闻名。它使用先进的深度学习模型,这些模型在处理各种口音、方言以及有背景噪音的音频时都表现得很好。
- 开始使用Deepgram需要付费吗?不需要。Deepgram为新注册的用户提供价值200美元的免费积分,这足够用来转录数百小时的音频,让开发者在决定付费前可以充分测试其所有功能。
- Deepgram支持哪些语言?Deepgram支持超过30种语言和方言,包括英语、西班牙语、中文(普通话)、印地语、法语、德语等多种主流语言。
- 相比其他服务,Deepgram的主要优势是什么?它的主要优势在于速度、准确性和成本效益的结合。它不仅转录速度非常快(实时和预录制音频处理都很快),而且在保持高准确率的同时,提供了多种先进的音频分析功能,性价比很高。