python脚本的流式语音播放、 javascript流式语音播放

291 篇文章 3 订阅
52 篇文章 3 订阅

python脚本的流式语音播放

客户端接收的是服务端返回的所有音频信息。requests库的stream参数设置为True,这将启用流式请求处理器。因此,服务端发送的音频流被切分为多个chunk,然后通过每个chunk进行分部返回,这使得客户端可以同时处理音频数据并播放音频。
在服务端向客户端发送信息时,会根据实际情况发送整个音频流,或将其切分为多个chunk发送。一些常见的情况包括:
1、客户端请求发送音频流的URL,服务端会根据请求一次性地发送一整个音频流。
2、服务端使用分块编码协议在客户端请求期间发送音频数据,客户端能够使用chunked编码在不等待整个响应完全生成的情况下立即开始处理音频流。

您可以使用Python中的`requests`库向服务端发送HTTP POST请求,发送文字数据,然后使用PyAudio库播放服务端返回的音频流。

以下是示例代码:

import requests
import pyaudio
import io

url = “http://127.0.0.1:5000/audio/tts/streaming” #服务端接收请求的URL
audio_buffer_size = 4096 #音频数据缓冲区大小
pcm_rate = 16000 #音频采样率

#发送请求
def send_request(text):
headers = {“Content-Type”: “text/plain”}
response = requests.post(url, data=text.encode(), headers=headers, stream=True)
if response.status_code == 200:
play_audio(response)
else:
print(“Request failed with error code {}”.format(response.status_code))

#播放音频流
def play_audio(response):
audio_bytes = io.BytesIO()
#将TextIOWrapper包装为BytesIO,便于使用PyAudio播放
for chunk in response.iter_content(chunk_size=audio_buffer_size):
if chunk:
audio_bytes.write(chunk)
audio_bytes.seek(0)
#创建PyAudio对象进行播放
p = pyaudio.PyAudio()
stream = p.open(format=p.get_format_from_width(2), channels=1, rate=pcm_rate, output=True)
#音频流按照缓冲区大小切分后播放
while True:
audio_data = audio_bytes.read(audio_buffer_size)
if not audio_data:
break
stream.write(audio_data)
#释放相关资源
stream.stop_stream()
stream.close()
p.terminate()

#发送请求示例
text = “你好世界”
send_request(text)


在上述Python脚本中,我们首先使用`requests`库向服务端发送HTTP POST请求,发送了一个文本字符串,并设置`stream=True`以便于在接收到音频数据后立即处理。在收到服务端的反馈后,我们使用`PyAudio`库播放服务端返回的音频流。每次处理`response`中的音频chunk数据时,我们先将其缓存到`BytesIO`对象中,然后将缓存后的BytesIO对象转换为音频流进行播放。

javascript流式语音播放

如果您要在Chrome浏览器上使用JavaScript代码实现流式播放PCM音频数据,可以使用Web Audio API和Fetch API。Web Audio API可以将PCM音频数据转换为可播放的音频流,而Fetch API则可以用于处理分块音频数据并将其传递给Web Audio API以进行播

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值