我正在开发语音到文本的应用程序。
所有的工作都很好,但我想实现反馈时,用户正在与应用程序交谈,以检测(脉动)声音活动。比如Shazam应用。我想我需要计算振幅,然后根据振幅的水平来制作脉动动画。
这是我读取字节的代码。我需要如何使用从AudioRecord的read方法中获得的int来计算它。
// stream bytes as they become available in chunks equal to the buffer size
mAudioExecutor!!.scheduleAtFixedRate({
// read audio data
val read = mAudioRecorder!!.read(
mBuffer, 0, mBuffer.size, AudioRecord.READ_BLOCKING)
// send next chunk
if (read > 0) {
subscriber(ByteString.copyFrom(mBuffer, 0, read))
}
}, 0, 10, TimeUnit.MILLISECONDS) 发布于 2019-07-29 22:18:43
您需要使用傅立叶变换(傅立叶变换)从音频字节中获得Ampl幅值。
您需要添加几个代码才能使其工作:
因为Stackoverflow的答案不能超过30,000个字符。我不能在这里添加代码。但我要分享我的github要点来帮助你。
是我的主旨链接。
有3个文件需要添加到源文件中。
使用:
在将上述3个文件添加到您的源代码后:
val audioCalculator = AudioCalculator()
// stream bytes as they become available in chunks equal to the buffer size
mAudioExecutor?.scheduleAtFixedRate({
// read audio data
val read = mAudioRecorder!!.read(
mBuffer, 0, mBuffer.size, AudioRecord.READ_BLOCKING
)
// send next chunk
if (read > 0) {
val amplitude = audioCalculator.getAmplitude(mBuffer)
// here you get amplitude
subscriber(ByteString.copyFrom(mBuffer, 0, read))
}
}, 0, 10, TimeUnit.MILLISECONDS)https://stackoverflow.com/questions/57252102
复制相似问题