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 金鑰保密。重要的是不要與任何人共享它或將其包含在可公開存取的程式碼儲存庫中。