Expo:实时获取音频数据并通过Socket.IO发送

Wat*_*e.N 7 sound-recognition socket.io react-native expo expo-av

我想做的应用程序

我想制作像 Shazam 这样的音频识别移动应用程序

我想通过 Socket.IO 每秒或每个样本将记录数据发送到基于机器学习的识别服务器(也许每秒发送数据采样率次数太多),然后移动应用程序接收并显示预测结果。

问题

如何在录音时获取数据recordingInstance?我读了世博会的音频文档,但我不知道该怎么做。

迄今为止

我跑了两个例子:

现在我想混合两个例子。感谢您的阅读。如果我能console.log记录数据,那会有很大帮助。

相关问题

小智 0

我想我找到了解决这个问题的好方法。

await recordingInstance.prepareToRecordAsync(recordingOptions);
recordingInstance.setOnRecordingStatusUpdate(checkStatus);
recordingInstance.setProgressUpdateInterval(10000);
await recordingInstance.startAsync();
setRecording(recordingInstance);
Run Code Online (Sandbox Code Playgroud)

上面创建并准备录制后,我添加了一个每 10 秒运行一次的回调函数。

const duration = status.durationMillis / 1000;
const info = await FileSystem.getInfoAsync(recording.getURI());
const uri = info.uri;
console.log(`Recording Status: ${status.isRecording}, Duration: ${duration}, Meterring: ${status.metering}, Uri: ${uri}`)
if(duration >10 && duration - prevDuration > 0){
            sendBlob(uri);
        }
 setPrevDuration(duration);
Run Code Online (Sandbox Code Playgroud)

回调函数检查持续时间是否大于 10 秒且与上次持续时间的差值是否大于 0,然后通过 WebSocket 发送数据。

目前唯一的问题是,它第一次不运行回调,但第二次运行。