Yi-Ting Chiu
Yi-Ting Chiu
就随便点几下那个 mic on然后给浏览器控制台截个图,看看他会显示什么。 cmd没有回应是因为前端的麦克风好像没有启动 (要嘛是麦克风没启动要嘛是vad没启动,反正其中一个有问题),前端根本听不见你说话,所以cmd什么也没接收到。具体原因我不是很清楚 (也没办法在我的电脑上复现你的问题...)
另外如果可以的话,你也可以换个浏览器看看会发生什么.... 你也可以检查一下你的浏览器有没有麦克风权限: 开一下这个网站 (https://www.vad.ricky0123.com ),随便说几句话看他能不能听到你(如果听到了,他的方框会加速,等你说完话了会显示刚刚的录音)。
还是麦克风(以及vad模块)无法成功初始化,说实话我真的不知道为什么... 你可以换一个浏览器看看问题是否能复现吗? 我稍微更新了一下网页部分的代码,看能不能获取更多信息。用这个static 文件夹替换掉项目代码文件夹中的 static 文件夹。 [static.zip](https://github.com/user-attachments/files/17302884/static.zip) 另外可以帮我在这个网页控制台中运行下面这两个代码吗? 这个函数会检查麦克风权限在这个网页上是否开启 ~~~js navigator.permissions.query({ name: 'microphone' }).then(function(result) { if (result.state === 'granted') { console.log("Microphone permission granted"); init_vad(); } else if (result.state === 'prompt')...
说实话我真的不知道你为什么会遇到这个问题。你遇到的问题跟python或是什么ffmpeg 甚至是这个项目的配置都没什么关系,完全只跟浏览器和前端代码有关系,具体来说是浏览器中的麦克风和 vad (Voice Activation Detection) 模型没有办法正常初始化 (报错信息是说初始化被中断了,原因未知)。 vad模型是透过浏览器内的 onnx 环境在浏览器内用 web assembly 运行的,所以不应该会出现平台兼容的问题。上面的demo网站用的是同个版本的同个vad 库,且上面的截图排除了麦克风权限没给和浏览器getMedia api不兼容的问题... 而且模型都在本地,所以也没有什么未知网络环境造成的问题... 而且相同的代码无法在其他电脑上稳定复现... 不是很懂... 我们再试试看改从CDN获取 vad 跟 onnx 运行环境好了。帮我把 `static/index.html`中, 关于 `Voice Activation Detection` 的...
看看能不能用,然后截个图,随便点点麦克风按钮之类的
换个浏览器试过了吗?我真不知道怎么解决了...
你的那位群友遇到的问题跟你不一样,事实上截图里的log显示他前端的vad初始化成功了,如果他有问题可能是其他地方出了问题。 具体获取音频流的那部分是 vad 包处理的,因为他还要跑vad模型判断你有没有在说话,估计是初始化vad模型那部分失败了,但原因未知。 我们试着运行看看vad包官网的代码吧,看能不能运行。你贴的那段 testVAD 写的不太对,所以 VAD is not defined 是在预料之中的。 运行看看这个吧 ~~~js async function main() { const myvad = await vad.MicVAD.new({ onSpeechStart: () => { console.log("Speech start detected")...
python 代码不会直接调用到vad模块。前端网页我是用js写的,在前端javascript 里面调用 vad 模型录音,侦测到用户说完话后,透过websocket 协议把录制的音频传回到后端的python服务端,再做语音识别。 如果你问的是具体是哪里用到了vad,实际上在初始化这个vad组件(myvad)的时候,所有相关的函数就作为回调函数传进去了。跟vad相关的代码除了启动vad跟关掉vad以外,都在这了。代码中,当 vad检测到人说完话的时候,onSpeechEnd 回调函数会被调用,然后sendAudioPartition函数会被执行,并把音频用 websocket 协议传回到 python服务端去。 你截图中的这个问题... 看起来像是 vad 模型在被初始化成功之前,就开始往后执行了。理论上,除非 `start_mic()` 在短时间内被调用了两次,我不太能想到为什么会出发这个问题,因为vad成功初始化了。我希望你测试的时候,既然vad已经能成功初始化了,就不要再往控制台里贴我之前给你的那些测试代码了,就让整个程序自然的开始。 另外,话说,你现在用的版本是多少? 0.2.2 到 0.2.3 中间我改了一些浏览器那边的东西。实际上我已经强烈不建议任何人使用 0.2.2 了,因为 0.2.3 我修了个很重要的 bug。另外我上面之前给你发的代码都是给 0.2.3用的,如果用在 0.2.2里面可能会导致未知的后果......
测试的时候让程序自然的开始,当小人出现的时候随便说几句话,看看控制台里有没有反应 (正确的反应是他会在你开始说话时发现你在说话,然后在你说完话的时候喷一个数组到控制台里。此时音频就已经被传回后端了,如果还有问题,记得也给后端的log截个图)
This looks interesting. I'm not that familiar with SillyTavern though, but I will look into it for sure