news 2026/3/26 7:49:45

【框架工具#8】语言识别SDK服务 FFmpeg

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【框架工具#8】语言识别SDK服务 FFmpeg

📃个人主页:island1314

⛺️ 欢迎关注:👍点赞 👂🏽留言 😍收藏 💞 💞 💞

  • 生活总是不会一帆风顺,前进的道路也不会永远一马平川,如何面对挫折影响人生走向 – 《人民日报》

🔥 目录

    • 一、安装
      • 1. 获取 API
      • 2. 安装 SDK
    • 二、安装 FFmpeg
      • 基本使用样例
        • FFmpeg 命令行格式
    • 三、测试
    • 四、二次封装

一、安装

1. 获取 API

第一步:登录百度云

网站:https://login.bce.baidu.com/

第二步:点击左上角,可以看到语音技术

第三步:进入语音技术之后,可以领取免费资源(备注:需完成实名认证)

第四步:点击创建 API 应用

第五步:获取 API 密钥,我们创建的应用就放在 应用列表 中

2. 安装 SDK

下载地址:https://ai.baidu.com/sdk (或者也可以点击 左边栏里的 HTTPSDK)

  • 这里下载的是 C SDK,然后将其下载解包到项目当中去

安装 sdk 所需依赖(一般安装之前,最好检查一下是否安装,不然容易出现版本冲突)

# 安装 jsoncppsudoaptinstalllibjsoncpp-dev# 安装 libcurlsudoaptinstallcurl# 安装 openssl# ubuntu 22.04 默认安装了

注意

  1. 关于参数:如果相关音频参数不符合要求,可以使用 ffmpeg 工具进行转码

    • 采样率: 百度语音识别一般仅支持 16000 的采样率。即 1 秒采样 16000 次。
    • 位深: 无损音频格式 pcm 和 wav 可以设置,百度语音识别使用 16bits 小 端序 ,即 2 个字节记录 1/16000 s 的音频数据。
    • 声道: 百度语音识别仅支持单声道。
  2. 语音识别返回结果与音频内容不匹配,例如:“嗨嗨嗨”、“嗯嗯嗯嗯嗯”、“什么” 等错误返回 ○ 解决方法:排查音频采样率、声道、格式等参数是否符合接口规范。如与 要求不符,需要用工具对音频进行转码。

  3. 在使用之前一定先过一遍官方文档:短语音识别REST-API-C++SDK - 语音技术

二、安装 FFmpeg

FFmpeg 是一个用于处理视频、音频等多媒体文件的开源工具包。它支持几乎所有的多媒体格式转换、剪辑和编辑,是开发者和多媒体工作者必备的工具。

第一步:安装下载 FFmpeg

官网:FFmpeg,选择如下(选择下面第一个)

1.Windows builds from gyan.dev

  • 来源:由知名开发者Gyan维护的构建。
  • 特点
    • 非常流行且广泛使用。
    • 构建配置完整,包含大量第三方库(如 x264, x265, libfdk-aac, libmp3lame 等),功能齐全。
    • 通常是GPL 许可证,意味着如果你用在商业闭源项目中,需要遵守 GPL 条款(可能需开源你的代码)。
    • 更新及时,稳定可靠。
  • 适合人群:普通用户、开发者、需要完整功能的场景。

📌 这是大多数用户的首选,尤其在 Windows 上使用 FFmpeg 时。

✅ 2.Windows builds by BtbN

  • 来源:由另一位开发者BtbN提供的构建。
  • 特点
    • 有时会提供更“精简”或“定制化”的版本。
    • 可能包含一些实验性功能或不同的编译选项。
    • 同样是基于 FFmpeg 源码,但构建脚本和依赖可能略有不同。
    • 也可能是 GPL 许可,具体需查看其发布说明。
  • 适合人群:希望尝试不同构建、或对特定功能有要求的高级用户。

下载如下:

下载完成后,解压缩得到 FFmpeg 文件夹。

第二步:解压文件并检查目录结构

解压后的文件夹中应包含以下目录:

  • bin:FFmpeg 可执行文件所在的文件夹,运行 FFmpeg 的所有命令都需通过此目录下的文件。
  • doc:文档资料。
  • presets:预设的格式和编码方案。

进入 bin 目录,可以看到 FFmpeg 的三个核心可执行文件:ffmpeg.exe、ffplay.exe、ffprobe.exe。

第三步:配置环境变量(输入 FFmpeg 的bin文件夹路径)

第四步:测试安装是否成功(查看相关版本号和版本信息)

基本使用样例

安装成功后,您可以使用命令行来执行 FFmpeg 的各种操作。以下是常用的命令行格式及其示例:

FFmpeg 命令行格式
ffmpeg[global_options]{[input_file_options]-i input_url}...{[output_file_options]output_url}
参数含义
-i输入文件路径(被转换的 MP4 文件)
-f输出文件格式设置为mpegts
-codec:v指定视频编码器为mpeg1video
-b:v设置输出视频比特率为2000k
-r设置帧速率为30
-bf设置 B 帧数量为0
-codec:a指定音频编码器为mp2
-ar设置音频采样频率为44100
-ac设置音频通道数为1
-b:a设置音频比特率为128k

示例:将 MP4 文件转换为 TS 格式

假设我们要将一个 MP4 视频文件转换为PCM 文件,命令如下:

ffmpeg -i"16k.mp4"-f mpegts -codec:v mpeg1video -b:v 2000k -r30-bf0-codec:a mp2 -ar44100-ac1-b:a 128k"16k.pcm"

结果如下:

三、测试

#include"../include/aip-cpp-sdk-4.16.7/speech.h"voidASR(aip::Speech*client){std::map<std::string,std::string>options;//options["dev_pid"] = "1537"; // 普通话识别std::string file_content;aip::get_file_content("./16k.pcm",&file_content);Json::Value result=client->recognize(file_content,"pcm",16000,options);std::cout<<"语音识别本地文件结果:"<<std::endl<<result.toStyledString();if(result["err_no"].asInt()!=0){std::cout<<result["err_msg"].asString()<<std::endl;return;}std::string message=result["result"][0].asString();std::cout<<"message :"<<message<<std::endl;}intmain(){// 务必替换百度云控制台中新建百度语音应用的 Api Key 和 Secret Keyaip::Speech*client=newaip::Speech("app_id","api_key","secret_key");// 语音识别调用ASR(client);return0;}

输出

lighthouse@VM-8-10-ubuntu:test$ g++ -otesttest_speech.cc -ljsoncpp -lcurl -lssl -lcrypto -std=c++11 lighthouse@VM-8-10-ubuntu:test$ ./test 语音识别本地文件结果:{"corpus_no":"7587670748902924485","err_msg":"success.","err_no":0,"result":["\u5317\u4eac\u79d1\u6280\u9986\u3002"],"sn":"603333233071766642264"}message :北京科技馆。

四、二次封装

asr.hpp

classASRClient{public:usingptr=std::shared_ptr<ASRClient>;ASRClient(conststd::string&app_id,conststd::string&api_key,conststd::string&secret_key):_client(app_id,api_key,secret_key){}std::stringrecognize(conststd::string&speech_data,std::string&err){Json::Value result=_client.recognize(speech_data,"pcm",16000,aip::null);if(result["err_no"].asInt()!=0){LOG_ERROR("语音识别失败:{}",result["err_msg"].asString());err=result["err_msg"].asString();returnstd::string();}returnresult["result"][0].asString();}private:aip::Speech _client;};

测试

#include"../../../common/asr.hpp"#include"gflags/gflags.h"DEFINE_string(app_id,"","语音平台应用ID");DEFINE_string(api_key,"","语音平台API密钥");DEFINE_string(secret_key,"","语音平台加密密钥");DEFINE_bool(run_mode,false,"程序的运行模式,false-调试; true-发布;");DEFINE_string(log_file,"","发布模式下,用于指定日志的输出文件");DEFINE_int32(log_level,0,"发布模式下,用于指定日志输出等级");intmain(intargc,char*argv[]){google::ParseCommandLineFlags(&argc,&argv,true);init_logger(FLAGS_run_mode,FLAGS_log_file,FLAGS_log_level);ASRClientclient(FLAGS_app_id,FLAGS_api_key,FLAGS_secret_key);std::string file_content;aip::get_file_content("16k.pcm",&file_content);std::string err="失败";std::string res=client.recognize(file_content,err);if(res.empty()){return-1;}std::cout<<res<<std::endl;return0;}

输出

lighthouse@VM-8-10-ubuntu:asr$makeg++ -std=c++17 test.cc -otest-lfmt -lspdlog -lgflags -lcurl -lcrypto /usr/lib/x86_64-linux-gnu/libjsoncpp.so.1.8.4 lighthouse@VM-8-10-ubuntu:asr$ ./test 北京科技馆。

相关链接

  1. 测试音频下载链接: https://platform.bj.bcebos.com/sdk/asr/asr_doc/doc_download_files/public.zip
  2. C++ sdk 使用文档: https://ai.baidu.com/ai-doc/SPEECH/dlbxfrs5o
  3. 常见问题: https://ai.baidu.com/ai-doc/SPEECH/wlciqajfo
  4. 音频格式及转码:https://ai.baidu.com/ai-doc/SPEECH/7k38lxpwf
  5. 调用示例:https://github.com/Baidu-AIP/sdk-demo

★,°:.☆( ̄▽ ̄)/$:.°★】那么本篇到此就结束啦,如果有不懂 和 发现问题的小伙伴可以在评论区说出来哦,同时我还会继续更新相关的内容,请持续关注我 !!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/22 17:44:35

Dify平台如何支持多模态输入输出处理?

Dify平台如何支持多模态输入输出处理&#xff1f; 在智能应用正从“能说会写”迈向“看得见、听得懂”的今天&#xff0c;单一文本交互已难以满足企业对AI系统日益复杂的期待。越来越多的场景要求模型不仅能理解用户的问题&#xff0c;还要能“看图说话”——比如让财务人员上传…

作者头像 李华
网站建设 2026/3/26 6:21:41

3个关键问题,解锁星露谷物语XNB文件编辑全攻略

3个关键问题&#xff0c;解锁星露谷物语XNB文件编辑全攻略 【免费下载链接】xnbcli A CLI tool for XNB packing/unpacking purpose built for Stardew Valley. 项目地址: https://gitcode.com/gh_mirrors/xn/xnbcli 想要个性化定制《星露谷物语》的游戏体验&#xff0c…

作者头像 李华
网站建设 2026/3/18 6:40:05

百度网盘直链解析技术:突破限速封锁的专业解决方案

百度网盘直链解析技术&#xff1a;突破限速封锁的专业解决方案 【免费下载链接】baidu-wangpan-parse 获取百度网盘分享文件的下载地址 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wangpan-parse 在数字化信息时代&#xff0c;百度网盘作为国内主流的云存储平台…

作者头像 李华
网站建设 2026/3/16 1:01:43

XNBCLI工具完全指南:5分钟掌握星露谷物语资源编辑技能

还在为《星露谷物语》的XNB文件加密格式而烦恼吗&#xff1f;想要自定义游戏纹理、音效却无从下手&#xff1f;XNBCLI工具正是你需要的XNB文件解密工具&#xff0c;专为星露谷物语资源编辑而生。这款基于JavaScript的命令行工具能帮你轻松解包和打包游戏资源文件&#xff0c;让…

作者头像 李华
网站建设 2026/3/16 1:01:44

全新文章创作指南:打造高质量技术内容

全新文章创作指南&#xff1a;打造高质量技术内容 【免费下载链接】Blender3mfFormat Blender add-on to import/export 3MF files 项目地址: https://gitcode.com/gh_mirrors/bl/Blender3mfFormat 核心创作原则 你是一位专业的技术内容创作者&#xff0c;负责为开源项…

作者头像 李华
网站建设 2026/3/16 1:01:44

Bili2text视频转文字工具:解放双手的内容创作利器

Bili2text视频转文字工具&#xff1a;解放双手的内容创作利器 【免费下载链接】bili2text Bilibili视频转文字&#xff0c;一步到位&#xff0c;输入链接即可使用 项目地址: https://gitcode.com/gh_mirrors/bi/bili2text 在信息爆炸的时代&#xff0c;视频已成为知识传…

作者头像 李华