You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用websocket-client库连接ElevenLabs WebSocket时recv()阻塞无响应的问题求助

使用websocket-client库连接ElevenLabs WebSocket时recv()阻塞无响应的问题求助

我发现ElevenLabs现在支持输入流配合流式输出功能了,但这个功能需要建立WebSocket连接。无奈项目必须用websocket-client库,而ElevenLabs官方Python客户端用的是另一个WebSocket库,所以只能自己实现WebSocket连接逻辑。

结果现在遇到了麻烦:代码里的data = json.loads(ws.recv())会一直阻塞,完全收不到任何数据。我对照官方客户端的逻辑改了好几遍,BOS、EOS和其余代码几乎都和官方一致,但就是卡在这一步,实在摸不着头脑,麻烦各位大佬帮忙看看问题出在哪!

下面是我的代码:

from websocket import create_connection, closing
import json
import base64

# 自定义文本分块函数(示例逻辑,实际已实现)
def text_chunker(text):
    chunk_size = 100
    for i in range(0, len(text), chunk_size):
        yield text[i:i+chunk_size]

# BOS和EOS与ElevenLabs官方客户端代码完全一致
BOS = json.dumps({
    "text": " ",
    "voice_settings": {"stability": 0.5, "similarity_boost": 0.5},
    "generation_config": {"chunk_length_schedule": [50, 100, 150, 200]}
})
EOS = json.dumps({"text": ""})

# 替换为实际的ElevenLabs WebSocket URL(需包含语音ID)
ws_url = "wss://api.elevenlabs.io/v1/text-to-speech/YOUR_VOICE_ID/stream-input"

with closing(create_connection(ws_url, header={"xi-api-key": "YOUR_API_KEY"})) as ws:
    # 发送流开始信号
    ws.send(BOS)

    # 待转换的目标文本
    text = "需要转换为语音的长文本内容"

    # 流式发送文本块并接收音频
    for text_chunk in text_chunker(text):
        data = dict(text=text_chunk, try_trigger_generation=True)
        ws.send(json.dumps(data))
        try:
            data = json.loads(ws.recv())  # 此处一直阻塞,无法继续执行
            if data["audio"]:
                yield base64.b64decode(data["audio"])  # type: ignore
        except TimeoutError:
            pass

    # 发送流结束信号
    ws.send(EOS)

    # 接收剩余音频数据
    while True:
        try:
            data = json.loads(ws.recv())
            if data["audio"]:
                yield base64.b64decode(data["audio"])  # type: ignore
        except ws.exceptions.ConnectionClosed:
            break

用ElevenLabs官方客户端(基于websockets.sync.client库)的话,这个流式功能完全正常,但换成websocket-client就出现了recv阻塞的问题,有没有人遇到过类似情况,或者能帮我排查下哪里的问题?

备注:内容来源于stack exchange,提问作者themweo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 15:54:50