首页
/ ElevenLabs Python库中获取自定义语音的方法

ElevenLabs Python库中获取自定义语音的方法

2025-07-01 03:10:41作者:魏献源Searcher

在ElevenLabs Python库中,开发者经常需要获取可用的语音列表。很多开发者发现直接使用voices()函数只能获取到预设(premade)语音,而无法获取自定义语音。本文将详细介绍如何正确获取所有语音资源,包括自定义语音。

问题背景

ElevenLabs提供了丰富的语音合成功能,用户既可以使用平台预设的语音,也可以创建自己的自定义语音。然而,当开发者尝试使用以下代码获取语音列表时:

from elevenlabs.client import ElevenLabs
from elevenlabs import voices

client = ElevenLabs(api_key=key)

# 获取语音列表
voices = voices()
for voice in voices:
    print(voice)

这段代码只能返回预设语音,而无法获取用户创建的自定义语音资源。

正确获取所有语音的方法

要获取包括自定义语音在内的所有语音资源,应该通过client对象来访问:

response = client.voices.get_all()

这个方法会返回一个包含所有语音的响应对象,其中包括预设语音和自定义语音。

解析语音响应数据

get_all()方法返回的是一个GetVoicesResponseModel对象,这个对象包含一个voices属性,该属性是一个语音对象的数组。每个语音对象都包含以下重要属性:

  • voice_id: 语音的唯一标识符
  • name: 语音名称
  • category: 语音类别(如预设或自定义)
  • description: 语音描述
  • labels: 语音标签
  • preview_url: 语音预览URL

语音分类处理示例

如果需要区分预设语音和自定义语音,可以这样处理:

response = client.voices.get_all()

for voice in response.voices:
    if voice.category == "premade":
        print(f"预设语音: {voice.name}")
    else:
        print(f"自定义语音: {voice.name}")

最佳实践建议

  1. 总是通过client.voices.get_all()来获取完整语音列表
  2. 使用类型提示或IDE的代码补全功能来探索响应对象的可用属性
  3. 根据业务需求对语音进行分类处理
  4. 缓存语音列表以减少API调用次数

通过以上方法,开发者可以充分利用ElevenLabs提供的所有语音资源,为用户提供更丰富的语音合成体验。

登录后查看全文
热门项目推荐
相关项目推荐