当前位置: 首页 > 知识库问答 >
问题:

javascript - js或者node能否做到实时把语音传到后台?

郎经纶
2024-02-22

js或者node能否做到实时把语音传到后台?
如果可以的话能否监听到是否有声音(需要做有声音实时传输,没声音就不传输,或者能分割出有声音和没声音的部分,类似这个意思['有声音', '', '有声音'])

共有2个答案

汝弘深
2024-02-22

可以实现,腾讯会议什么都有 web 版本。也有声网之类的商业化方案

傅高逸
2024-02-22

在 Node.js 中,你可以使用 WebRTC (Web Real-Time Communication) 技术实现实时语音传输。WebRTC 是一种支持实时音视频通信的开放标准,可在浏览器之间直接建立安全的 P2P (Peer-to-Peer) 连接,进行实时通信。

首先,你需要一个支持 WebRTC 的库,例如 simple-peer。下面是一个简单的示例,展示了如何使用 simple-peer 在 Node.js 中实现实时语音传输:

const Peer = require('simple-peer');const getUserMedia = require('getusermedia');const audioContext = new (window.AudioContext || window.webkitAudioContext)();// 获取麦克风音频流getUserMedia({ audio: true }, (stream) => {  // 创建一个新的 peer 连接  const peer = new Peer({    initiator: true,    trickle: false,    stream: stream,    media: { audio: true }  });  // 当对端 peer 连接建立时触发  peer.on('connection', (connection) => {    // 将音频数据转换为 WAV 格式,并发送给对端    const recorder = require('pcm-recorder').create({ type: 'wav' });    connection.on('data', (data) => {      recorder.write(data);      connection.send(data); // 发送原始音频数据给对端    });  });  // 将麦克风音频流输入到 WebRTC 连接中  peer.on('signal', (data) => {    // 解析接收到的信号数据,并设置对端 peer 的配置和信号数据    const signal = peer.signal(data);  });});

在这个示例中,我们首先使用 getUserMedia 获取麦克风音频流。然后,我们创建一个新的 Peer 实例,并将音频流传递给它。当对端 peer 连接建立时,我们将音频数据转换为 WAV 格式,并发送给对端。为了实现实时传输,我们需要监听 connectiondata 事件,并在接收到数据时将其发送回对端。此外,我们还需要监听 signal 事件,以便在接收到对端 peer 的信号数据时设置对端 peer 的配置和信号数据。

至于监听是否有声音,你可能需要使用音频处理库(如 audio-buffer)来处理音频数据。你可以通过分析音频数据中的幅度和频率信息来判断是否有声音。具体实现方式取决于你的需求和音频数据的特性。你可能需要使用一些音频处理算法(如傅里叶变换)来分析音频数据,并确定声音的存在和强度。

 类似资料:
  • js或者vue实现实时录音功能、如何实现、只录电脑系统声音、或者只录麦克风声音、用户可以自行选择录音的方式 有那些插件或者其他实现方案吗。 请求大佬指教 无

  • 我想在我的应用程序中转换语音到文本...对于这个,我正在使用识别监听器界面一切正常,但如何更新和显示文本,即使说话(像在谷歌现在语音搜索) 我已经设置了识别意图。EXTRA_PARTIAL_RESULTS,为真,并且还使用了识别监听器界面的onPARAL结果(Bundle arg()方法来设置文本通过语音识别完成后立即显示整个文本,但是我希望实时文本在用户说话时显示 我的活动 怎么让这一切发生

  • 我正在尝试从扬声器转录音频 我正在将声音从扬声器传送到节点。js文件(https://askubuntu.com/a/850174) 这是我的抄本。js公司 但谷歌云语音到文本在1分钟内对流媒体识别有一个限制。所以我有一个错误“超过了允许的最大流持续时间65秒” 如何将流拆分为以静默为拆分器的块,或拆分为持续30秒的块?

  • 我正在做一个项目,我需要发送一个音频流到一个节点。js服务器。我可以使用此功能捕获麦克风声音: 如你所见,我能够捕捉音频并在网站上播放。 现在我想把那个音频流发送到一个节点。js服务器,并将其发送回其他客户端。像语音聊天,但我不想使用WebRTC,因为我需要服务器中的流。我怎样才能做到这一点?我可以用插座吗。我想这样做?在我看到的示例中,他们录制了音频,并发送了一个文件,但我需要“实时”音频。

  • 问题内容: 我目前正在尝试将直播麦克风音频从Android设备流式传输到Java程序。我首先在两个Android设备之间发送实时音频,以确认我的方法正确。在接收设备上几乎没有任何延迟地可以完美地听到音频。接下来,我将相同的音频流发送到一个小型Java程序,并验证了数据也已正确发送到此处。现在,我想要做的是对这些数据进行编码,并以某种方式在运行Java程序的服务器上对其进行回放。我宁愿在使用HTML

  • 我目前正在制作一个音乐不和谐机器人。我的问题是在命令的第一行:即使用户在语音频道中,语音频道也被标记为未定义,并且bot返回“您必须在语音频道中才能使用此命令”