pyht是用于 PlayHT 的 AI 文本转语音 API 的 Python SDK。 PlayHT 为实时用例构建对话式语音 AI 模型。使用pyht ,您可以轻松地将文本转换为具有人类声音的高质量音频流。
目前该库仅支持流式文本转语音。有关 PlayHT API 提供的全套功能(例如语音克隆),请参阅 PlayHT 文档
aiohttp
filelock
grpc
requests
websockets
您可以使用 pip 安装pyht SDK:
pip install pyht
您可以通过创建Client
实例并调用其tts
方法来使用pyht SDK。这是一个简单的例子:
from pyht import Client
from dotenv import load_dotenv
from pyht . client import TTSOptions
import os
load_dotenv ()
client = Client (
user_id = os . getenv ( "PLAY_HT_USER_ID" ),
api_key = os . getenv ( "PLAY_HT_API_KEY" ),
)
options = TTSOptions ( voice = "s3://voice-cloning-zero-shot/775ae416-49bb-4fb6-bd45-740f205d20a1/jennifersaad/manifest.json" )
for chunk in client . tts ( "Hi, I'm Jennifer from Play. How can I help you today?" , options ):
# do something with the audio chunk
print ( type ( chunk ))
也可以流式传输文本,而不是一次性将其作为字符串提交:
for chunk in client . stream_tts_input ( some_iterable_text_stream , options ):
# do something with the audio chunk
print ( type ( chunk ))
还提供了异步版本的客户端:
from pyht import AsyncClient
client = AsyncClient (
user_id = os . getenv ( "PLAY_HT_USER_ID" ),
api_key = os . getenv ( "PLAY_HT_API_KEY" ),
)
options = TTSOptions ( voice = "s3://voice-cloning-zero-shot/775ae416-49bb-4fb6-bd45-740f205d20a1/jennifersaad/manifest.json" )
async for chunk in client . tts ( "Hi, I'm Jennifer from Play. How can I help you today?" , options ):
# do something with the audio chunk
print ( type ( chunk ))
tts
方法采用以下参数:
text
:要转换为语音的文本。options
:用于 TTS 请求的选项。TTSOptions
对象(见下文)。voice_engine
:用于 TTS 请求的语音引擎。Play3.0-mini-http
(默认):我们最新的多语言模型,通过 HTTP 传输音频。 (请注意,它是Play
,而不是像以前的语音引擎那样的PlayHT
)Play3.0-mini-ws
:我们最新的多语言模型,通过 WebSocket 传输音频。 (请注意,它是Play
,而不是像以前的语音引擎那样的PlayHT
)Play3.0-mini-grpc
:我们最新的多语言模型,通过 gRPC 流式传输音频。如果您使用 Play On-Prem,请使用此语音引擎。 (请注意,它是Play
,而不是像以前的语音引擎那样的PlayHT
)PlayHT2.0-turbo
:我们传统的纯英语模型,通过 gRPC 流式传输音频。TTSOptions
类用于指定 TTS 请求的选项。它具有以下成员以及这些受支持的值:
voice
:用于 TTS 请求的语音;一个字符串。format
:要返回的音频的格式; Format
枚举值。FORMAT_MP3
(默认)FORMAT_WAV
FORMAT_MULAW
FORMAT_FLAC
FORMAT_OGG
FORMAT_RAW
sample_rate
:要返回的音频的采样率;一个整数。quality
:已弃用(使用采样率来调整音频质量)speed
:要返回的音频的速度,浮点型(默认 1.0)。seed
:用于生成音频的随机种子,一个整数(默认为 None,将随机生成)。temperature
:模型的温度,浮点数。top_p
:模型的 top_p,一个浮点数。text_guidance
:模型的text_guidance,一个浮点数。voice_guidance
模型的voice_guidance,一个浮点数。style_guidance
(仅限 Play3.0-mini-http 和 Play3.0-mini-ws):模型的 style_guidance,一个浮点数。repetition_penalty
:模型的repetition_penalty,一个浮点数。disable_stabilization
(仅限 PlayHT2.0-turbo):禁用音频稳定过程,布尔值(默认为 False)。language
(仅限 Play3.0-mini-http 和 Play3.0-mini-ws):要朗读的文本的语言, Language
枚举值或 None(默认英语)。AFRIKAANS
ALBANIAN
AMHARIC
ARABIC
BENGALI
BULGARIAN
CATALAN
CROATIAN
CZECH
DANISH
DUTCH
ENGLISH
FRENCH
GALICIAN
GERMAN
GREEK
HEBREW
HINDI
HUNGARIAN
INDONESIAN
ITALIAN
JAPANESE
KOREAN
MALAY
MANDARIN
POLISH
PORTUGUESE
RUSSIAN
SERBIAN
SPANISH
SWEDISH
TAGALOG
THAI
TURKISH
UKRAINIAN
URDU
XHOSA
您可以从命令行运行提供的演示。
注意:该演示依赖于以下软件包:
pip install numpy soundfile
python demo/main.py --user $PLAY_HT_USER_ID --key $PLAY_HT_API_KEY --text " Hello from Play! "
要与 asyncio 客户端一起运行,请使用--async
标志:
python demo/main.py --user $PLAY_HT_USER_ID --key $PLAY_HT_API_KEY --text " Hello from Play! " --async
要使用 HTTP API(使用我们最新的 Play3.0-mini 模型)运行,请使用--http
标志:
python demo/main.py --user $PLAY_HT_USER_ID --key $PLAY_HT_API_KEY --text " Hello from Play! " --http
要使用 WebSockets API(也使用我们最新的 Play3.0-mini 模型)运行,请使用--ws
标志:
python demo/main.py --user $PLAY_HT_USER_ID --key $PLAY_HT_API_KEY --text " Hello from Play! " --ws
HTTP 和 WebSockets API 也可以与异步客户端一起使用:
python demo/main.py --user $PLAY_HT_USER_ID --key $PLAY_HT_API_KEY --text " Hello from Play! " --http --async
python demo/main.py --user $PLAY_HT_USER_ID --key $PLAY_HT_API_KEY --text " Hello from Play! " --ws --async
或者,您可以以交互模式运行演示:
python demo/main.py --user $PLAY_HT_USER_ID --key $PLAY_HT_API_KEY --interactive
在交互模式下,您可以输入文本行来即时生成和播放音频。空行将退出交互式会话。
要开始使用pyht SDK,您需要 API 密钥和用户 ID。请按照以下步骤获取它们:
访问 API 页面:导航至 API 访问页面。
生成您的 API 密钥:
找到您的用户 ID :查找并复制您的用户 ID,该 ID 可以在同一页面的“用户 ID”部分下找到。
请对您的 API 密钥保密。重要的是不要与任何人共享它或将其包含在可公开访问的代码存储库中。