前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >ffmeg_facet的意思

ffmeg_facet的意思

作者头像
全栈程序员站长
发布于 2022-11-09 13:41:39
发布于 2022-11-09 13:41:39
2K00
代码可运行
举报
运行总次数:0
代码可运行

大家好,又见面了,我是你们的朋友全栈君。

音频文件转码

简介

本文描述如何从其它格式的音频转成符合语音识别输入要求格式的音频文件。

由于底层识别使用的是pcm,因此推荐直接上传pcm文件。如果上传其它格式,会在服务器端转码成pcm,调用接口的耗时会增加。

语音识别仅支持以下格式 :pcm(不压缩)、wav(不压缩,pcm编码)、amr(有损压缩格式);8k/16k 采样率 16bit 位深的单声道。即:

  1. pcm wav amr 格式三选一。 正常情况请使用pcm。其中wav格式需要使用pcm编码。
  2. 采用率二选一 8000 或者 16000。正常情况请使用16000
  3. 单声道

示例音频文件下载

转换命令示例

wav 文件转 16k 16bits 位深的单声道pcm文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ffmpeg -y  -i 16k.wav  -acodec pcm_s16le -f s16le -ac 1 -ar 16000 16k.pcm 

44100 采样率 单声道 16bts pcm 文件转 16000采样率 16bits 位深的单声道pcm文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ffmpeg -y -f s16le -ac 1 -ar 44100 -i test44.pcm  -acodec pcm_s16le -f s16le -ac 1 -ar 16000 16k.pcm 

mp3 文件转 16K 16bits 位深的单声道 pcm文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ffmpeg -y  -i aidemo.mp3  -acodec pcm_s16le -f s16le -ac 1 -ar 16000 16k.pcm 

// -acodec pcm_s16le pcm_s16le 16bits 编码器 
// -f s16le 保存为16bits pcm格式
// -ac 1 单声道
// -ar 16000 16000采样率

正常输出如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Input #0, mp3, from 'aaa.mp3':
  Metadata:
    encoded_by      : Lavf52.24.1
  Duration: 00:02:33.05, start: 0.000000, bitrate: 128 kb/s
    Stream #0:0: Audio: mp3, 44100 Hz, stereo, s16p, 128 kb/s
// 输入音频, MP3格式, 44100采样率,stereo-双声道, 16bits 编码 
    
Output #0, s16le, to '16k.pcm':
  Metadata:
    encoded_by      : Lavf52.24.1
    encoder         : Lavf57.71.100
    Stream #0:0: Audio: pcm_s16le, 16000 Hz, mono, s16, 256 kb/s
    
// 输入音频, MP3格式, 16000采样率,mono-单声道, 16bits 
// 256 kb/s = 32KB/s = 32B/ms

ffmpeg 使用说明

简介

ffmpeg 的一个功能是转换不同的音频格式,其它简介请至http://ffmpeg.org/

linux 版本:http://www.ffmpeg.org/download.html#build-linux linux 静态编译版本:https://www.johnvansickle.com/ffmpeg/ windows 版本 :http://ffmpeg.zeranoe.com/builds/

ffmpeg官方文档地址:http://ffmpeg.org/ffmpeg.html

编译参数与支持格式

ffmpeg默认支持pcm与wav(pcm编码)格式,额外的编译参数如下:

  • –enable-libopencore-amrnb 支持amr-nb(8000 采样率) 读写
  • –enable-libopencore-amrwb 支持amr-wb(16000 采样率) 读取
  • –enable-libvo-amrwbenc 支持amr-wb(16000 采样率) 写入
  • –enable-libmp3lame 支持mp3 写入 ffmpeg -codecs 可以查看所有的格式:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
	D..... = Decoding supported  # 读取
	.E.... = Encoding supported  # 写入
	..A... = Audio codec      # 音频编码
	....L. = Lossy compression # 有损
	.....S = Lossless compression # 无损
	DEA..S pcm_s16le            PCM signed 16-bit little-endian
	DEA.LS wavpack              WavPack
	DEA.L. mp3  MP3 (MPEG audio layer 3) 
	DEA.L. amr_nb       AMR-NB (Adaptive Multi-Rate NarrowBand)         
	DEA.L. amr_wb       AMR-WB (Adaptive Multi-Rate WideBand)     

输入音频参数

wav amr 与mp3格式都自带头部, 含有采样率 编码 多声道等信息。而pcm为原始音频信息,没有类似头部。 wav(pcm编码)格式,仅仅在同样参数的pcm文件加了个几百k的文件头。

输入 wav amr 及mp3格式:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
-i  test.wav # 或test.mp3 或者 test.amr

输入 pcm格式: pcm需要额外告知编码格式,采样率,单声道信息

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
-f s16le -ac 1 -ar 16000 -i 8k.pcm
// 单声道 16000 采样率 16bits编码 pcm文件

输出音频参数

在原始采样率 大于或者接近16000的时候,推荐使用16000的采样率。 8000的采样率会降低识别效果。 输出wav和amr格式时,如果不指定输出编码器的haunt,ffmpeg会选取默认编码器。

输出pcm音频

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
-f s16le -ac 1 -ar 16000 16k.pcm  
// 单声道 16000 采样率 16bits编码 pcm文件

输出wav 音频:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
-ac 1 -ar 16000 16k.wav 
// 单声道 16000 采样率 16bits编码 pcm编码的wav文件

输出amr-nb 音频 :全称是:Adaptive Multi-Rate,自适应多速率,是一种音频编码文件格式,专用于有效地压缩语音频率。在带宽不是瓶颈的情况下,不建议选择这种格式,解压需要百度服务器额外的耗时 amr-nb格式只能选 8000采样率。bit rates越高音质越好,但是文件越大。 bit rates 4.75k, 5.15k, 5.9k, 6.7k, 7.4k, 7.95k, 10.2k or 12.2k

8000的采样率及有损压缩会降低识别效果。如果原始采样率大于16000,请使用 amr-wb格式。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
-ac 1 -ar 8000 -ab 12.2k 8k-122.amr

// 8000 采样率 12.2 bitRates 

输出 amr-wb 格式,采样率 16000。 bit rates越高音质越好,但是文件越大。 6600 8850 12650 14250 15850 18250 19850 23050 23850

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
-acodec amr_wb -ac 1 -ar 16000 -ab 23850 16k-23850.amr

常用参数

  • -y 覆盖同名文件
  • -v 日志输出基本 如 -v ERROR -v quiet 等

参数拼接

ffmpeg {常用参数} {输入音频参数} {输出音频参数}

示例: 输入是 32000HZ的单声道 16bits pcm文件。查询之前的输入参数为 “ -f s16le -ac 1 -ar 32000 -i test32.pcm” 输出是 16000HZ的单声道 16bits pcm文件。查询之前的输出参数为 “-f s16le -ac 1 -ar 16000 16k.pcm” 常用参数选择 -y

合并如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ffmpeg  -y  -f s16le -ac 1 -ar 32000  -i test32.pcm -f s16le -ac 1 -ar 16000 16k.pcm

查看音频格式ffprobe使用

查看语音合成生成的MP3格式信息:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ffprobe -v quiet -print_format json -show_streams  aidemo.mp3

返回如下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 {
    "streams": [
        {
            "index": 0,
            "codec_name": "mp3", // mp3 格式
            "codec_long_name": "MP3 (MPEG audio layer 3)",
            "codec_type": "audio",
            "codec_time_base": "1/16000", 
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "sample_fmt": "s16p", 
            "sample_rate": "16000", // 16000采样率
            "channels": 1, // 单声道
            "channel_layout": "mono",
            "bits_per_sample": 0,
            "r_frame_rate": "0/0",
            "avg_frame_rate": "0/0",
            "time_base": "1/14112000",
            "start_pts": 0,
            "start_time": "0.000000",
            "duration_ts": 259096320,
            "duration": "18.360000",
            "bit_rate": "16000",
            "disposition": {
                "default": 0,
                "dub": 0,
                "original": 0,
                "comment": 0,
                "lyrics": 0,
                "karaoke": 0,
                "forced": 0,
                "hearing_impaired": 0,
                "visual_impaired": 0,
                "clean_effects": 0,
                "attached_pic": 0,
                "timed_thumbnails": 0
            }
        }
    ]
}

pcm文件音频时长计算

同图像bmp文件一样,pcm文件保存的是未压缩的音频信息。 16bits 编码是指,每次采样的音频信息用2个字节保存。可以对比下bmp文件用分别用2个字节保存RGB颜色的信息。 16000采样率 是指 1秒钟采样 16000次。常见的音频是44100HZ,即一秒采样44100次。 单声道: 只有一个声道。

根据这些信息,我们可以计算: 1秒的16000采样率音频文件大小是 216000 = 32000字节 ,约为32K 1秒的8000采样率音频文件大小是 28000 = 16000字节 ,约为 16K

如果已知录音时长,可以根据文件的大小计算采样率是否正常。

http://ai.baidu.com/docs#/ASR-API/top 语音识别rest api文档

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/189667.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年9月25日 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
MAC 安装mysql
一、下载安装包 https://dev.mysql.com/downloads/mysql/
week
2018/08/24
2.2K0
macOS 安装 mysql
打开下载页面 https://dev.mysql.com/downloads/mysql/5.7.html ,下载镜像安装文件。
我是一条小青蛇
2019/10/23
9.2K1
macOS 安装 mysql
mac 安装mysql详细教程
双击 mysql-5.7.20-macos10.12-x86_64.dmg 文件,加载镜像 双击 mysql-5.7.20-macos10.12-x86_64.pkg ,开始安装
网罗开发
2021/01/29
2.4K0
mac 安装mysql详细教程
图解Mac下如何安装管理MySQL
下载安装MySQL 1.访问MySQL官网:http://dev.mysql.com/downloads/ 2.下载 MySQL Community Server: 3.Select Platform
杨熹
2018/04/02
3.1K0
图解Mac下如何安装管理MySQL
MySQL基础知识(二)-超详细 Linux安装MySQL5.7完整版教程及遇到的坑
 我们经常会在Linux上安装MySQL数据库,但是安装的时候总是会这里错,那里错,不顺利,今天整理了一下安装流程,连续安装来了两遍,没有遇到什么大错误,基本上十分钟左右可以搞定,教程如下。写着一篇文章主要是答应别人要帮忙给他在Linux上安装一下mysql(MySQL是5.7,Linux是centos7),然后自己提前实践一下,不要关键时刻掉链子。古有刘备三顾茅庐,今有宏哥三连数据库。快来看看发生什么事了!!!
北京-宏哥
2022/12/10
1.6K0
MySQL基础知识(二)-超详细 Linux安装MySQL5.7完整版教程及遇到的坑
最新版MySQL在MacOS上的安装与使用!
我们本文将采用最常规的方式,也就是安装包的方式进行安装,这也是我推荐给新手的安装方式,因为这种安装方式更直观更可控一些,比如对 MySQL 版本的选择和密码配置等,那接下来我们就直接开始吧。
磊哥
2020/10/27
2.1K0
最新版MySQL在MacOS上的安装与使用!
Mac 下 MySQL5.7.22的安装
1.使用安装包安装mysql(网上下载实在是太慢了,需要安装包的可以在文章底部留言,我发给您) 双击打开安装文件 双击pkg文件安装 一路向下,记得保存最后弹出框中的密码(它是你mysql root账
JavaEdge
2018/05/07
1K0
Mac 下 MySQL5.7.22的安装
mysql免安装版配置和一些常见问题
今天在Windows Server 2003下安装mysql,遇到不少问题。之前在另外两台服务器安装的时候也遇到了几个问题,最后找到不少文章解决了,记录一下。
sunonzj
2022/06/21
1.3K0
mysql免安装版配置和一些常见问题
Mac安装MySQL修改密码问题
mac安装Mysql有两种方式,即dmg安装包方式和命令行方式,dmg安装很正常,一路点击安装即可。但是,MySQL 5.7连接数据库突然发现并没有设置过密码,上网查一下才知道自从mysql5.7之后安装完后会自动生成一个随机的密码,那么有没有一种办法可以修改这个默认的初始密码呢?
xiangzhihong
2022/11/30
2.3K0
MySQL之安装与配置(mac版)
第一步:打开MySQL官网网址,https://www.mysql.com ,点击DOWNLOAD。
yuanshuai
2022/08/22
4K0
MySQL之安装与配置(mac版)
centos7安装部署mysql_8.0
2.1 访问mysql官网下载 https://dev.mysql.com/downloads/repo/yum/ 选择对应版本(linux7)下载
用户5013326
2022/11/14
7220
在Mac环境下配置php开发环境:Apache+php+MySql
此时在浏览器中输入http://localhost,会出现It works!的页面
用户1685462
2021/07/23
3.2K0
Mac-下-MySQL5-7-22的安装
苹果->系统偏好设置->最下边点mysql 在弹出页面中 关闭mysql服务(点击stop mysql server)
JavaEdge
2019/07/01
6660
Mac-下-MySQL5-7-22的安装
macOS 下git+ Java + Maven + MySql 开发环境
Git 官网下载:http://git-scm.com/download/mac 安装过程和 Windows 没啥区别,都是下一步下一步。 IntelliJ IDEA 对 Git 的支持很好,也不需要额外配置什么,IntelliJ IDEA 的 Git 操作都很便捷强烈使用 IntelliJ IDEA 作为 Git 的 GUI 操作工具。 Homebrew 方式(推荐):brew install git JDK 官网下载 JDK7:http://www.oracle.com/technetwork/java
IT小马哥
2020/09/21
1.3K0
Linux Centos上安装 MySQL 8.0.16
  因为我在我的Linux上安装的是Centos系统,本次安装对于我们这些不太熟悉Liunx操作系统的小白使用的是镜像下载安装,这样子我们只需要输入一些简单的命令即可,当然你也可以下载压缩包自己完成一些初始化的配置与安装。使用这种方式的话大家可以查看一些这篇博客进行安装,该作者写的相对的详细:https://blog.csdn.net/github_39533414/article/details/80144890。
追逐时光者
2019/08/28
1.6K0
Linux Centos上安装 MySQL 8.0.16
Mysql 8.0.18数据库安装教程
最近部署一台Server2012R2数据中心版监控服务器,数据库是mysql,准备工作如:下载数据库、配置环境变量、配置my.ini文件都正常,等到执行mysqld --initialize --console命令时就报错:“无法启动此程序,因为计算机中丢失MSVCP140.dll”、然后查询没有安装VC++程序;接着安装VC++2015的时候又提示缺少KB2999226补丁,然后安装这个补丁又要打其他补丁,都是坑……希望通过本文的介绍,让伙伴们跳过一个个坑,简单快速的安装和连接mysql。
吾爱运维
2022/09/29
1.4K0
Mysql 8.0.18数据库安装教程
Mac 下安装配置 MySql(Version 5.7.22) 环境变量
和尚我今天在 Mac 上安装了一下 MySql,当前版本为 mysql-5.7.22, 没想到耽误了挺长时间,把安装过程和遇到的问题整理一下,希望各位不要遇到我这样的问题。
阿策小和尚
2019/08/12
2.1K0
Mac 下安装配置 MySql(Version 5.7.22) 环境变量
MySQL数据库的各种安装方式【Windows,Linux,Docker】一次都告诉你
  MySQL数据库是作为程序员来说必备的一个组件,而安装相对来说又是非常繁琐的,所以本文就给大家整理下MySQL的各种安装操作。
用户4919348
2022/04/13
6680
MySQL数据库的各种安装方式【Windows,Linux,Docker】一次都告诉你
从头部署多个版本mysql
系统:centos7.3一台 软件版本:mysql-5.6.39/mysql-5.7.21 部署目录:/usr/local/ 数据目录:/data
陈不成i
2021/06/07
1.5K0
44.QT-安装MySQL、测试连接MySQL
在上章学习了42.QT-操作SQLite数据库后,发现MySQL和SQLite的语句都大致相同,所以本章只测试MySQL是否能使用
诺谦
2019/06/14
3.1K0
相关推荐
MAC 安装mysql
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档