首页 文章

机器人如何从Facebook Messenger(MP4)接收语音文件并将其转换为Bing或Google等语音引擎识别的格式?

提问于
浏览
2

我正在尝试使用微软的Bot框架为Facebook Messenger创建一个机器人,它将执行此操作:

  • 获取通过Facebook Messenger发送的用户语音消息

  • 将语音转换为文本

  • 用它做点什么

从Messenger获取语音消息没有问题(可以从机器人收到的消息中提取URL),将音频文件转换为语音也没有问题(使用Bing Speech API或Google的类似API) .

但是,这些API需要PCM(WAV)文件,而Facebook Messenger会为您提供MP4文件 .

是否有一种流行的/标准的方式将一种格式转换为另一种用于编写机器人的格式?

到目前为止,我最好的想法是在我的服务器上运行 vlc.exe 作为控制台作业并转换文件,但这听起来不是最好的解决方案 .

1 回答

  • 2

    开发了一个解决方案,其工作方式如下:

    • 从Facebook接收语音留言

    • 使用 Activity.Attachments 中的链接将MP4文件下载到本地磁盘

    • 使用MediaToolKit(FFMPEG的包装器)将MP4 / AAC转换为本地服务器上的WAV

    • 将WAV发送到Bing Speech API

    所以我的问题的答案是:使用MediaToolKit ffmpeg转换文件格式 .

    示例实现和代码:https://github.com/J3QQ4/Facebook-Messenger-Voice-Message-Converter

    public string ConvertMP4ToWAV()
        {
            var inputFile = new MediaFile { Filename = SourceFileNameAndPath };
            var outputFile = new MediaFile { Filename = ConvertedFileNameAndPath };
    
            using (var engine = new Engine(GetFFMPEGBinaryPath()))
            {
                engine.Convert(inputFile, outputFile);
            }
    
            return ConvertedFileNameAndPath;
        }
    

相关问题