我正在研究Discord bot的项目,我想让机器人在Discord频道内收听并处理语音命令。
我正在使用名为Sphinx(https://cmusphinx.github.io/)的开源语音到文本Java库。我通过此https://github.com/DV8FromTheWorld/JDA库从Discord服务器接收音频数据。
此类(https://github.com/DV8FromTheWorld/JDA/blob/master/src/main/java/net/dv8tion/jda/core/audio/AudioReceiveHandler.java#L65)用于接收音频。
每handleCombinedAudio(CombinedAudio audio)
次调用方法20 ms
,可以使用byte[]
检索audio.getBytes[]
音频数据。
语音识别软件需要InputStream
个byte
数组才能正确识别数据。我有一种方法将byte
数组连接起来形成3 sec
个声音块,每个声音由语音识别软件处理。我遇到的问题是声音格式不匹配。
狮身人面像需要RIFF (little-endian) data, WAVE audio, Microsoft PCM, 16 bit, mono 16000 Hz
Discord返回音频:48KHz 16bit stereo signed BigEndian PCM
如何将收到的byte[]
数组从Discord转换为Sphinx的正确格式?
任何想法都将不胜感激。请具体回答。