gpt4 book ai didi

javascript - JS - 从缓冲区播放音频

转载 作者:行者123 更新时间:2023-12-02 22:31:59 24 4
gpt4 key购买 nike

我有一个 python 脚本,它每 170 毫秒生成一个音频缓冲区。
这个缓冲区通过套接字实时发送到我的 JS 程序。
我现在正在尝试实时播放缓冲区的声音。

每次收到东西时,我都尝试创建一个新的 JS AudioBuffer,但这样做会导致很多口吃。

var net = require('net');
var client = new net.Socket();

client.connect(8484, '127.0.0.1', function() {
console.log('Connected');
});

var audioCtx = new (window.AudioContext || window.webkitAudioContext)();
var channels = 1;

client.on('data', function(data) {
// clean data (each buffer has a length of 1350)
var array = String(data).split(";");
for (var i = 0; i < array.length; i++)
array[i] = parseFloat(array[i])
// play the small buffer
var buf = audioCtx.createBuffer(channels, array.length, 16000);
var buffering = buf.getChannelData(0);
for (var i = 0; i < array.length; i++)
buffering[i] = array[i];
var source = audioCtx.createBufferSource();
source.buffer = buf;
source.connect(audioCtx.destination);
source.start();
});

我也尝试了 web-audio-stream API,但它显示了一条错误消息。

谢谢

最佳答案

嗨 abcdef 或其他什么,

您需要为缓冲区计时。所以你需要知道 block 的长度=> 170 ms。因此,在开始另一 block 之前,请确保一 block 已完成。您可以使用数组或 setTimeout 或其他方式执行此操作。

也许 split(";") 命令也太慢了。
我的意思是你需要成千上万的 split 。是不是太费时间了?

如果这是一个瓶颈并且您需要更多时间来完成所有处理,请尝试记录,因为您只有 170 毫秒。

也许您可以在 python 中生成数据,而不必拆分并且可以直接解码。就像 mp3 或其他东西 => wav 可能更快。

我不知道这真的取决于您的设置和不同步骤所花费的时间。

干杯

基连

关于javascript - JS - 从缓冲区播放音频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45031333/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com