uniapp的app端的getRecorderManager是ucloud官方自己实现的一套录音api,有些编码不对,默认的是amr,如果要转换成wav或pcm,需要服务端进行转换,可通过以下代码获取app端的音频编码支持类型
const supportFormats = plus.audio.getRecorder().supportedFormats // ["amr","3gp","aac"]服务端amr转pcm
可以借助pydub库来实现。不过pydub本身依赖于ffmpeg工具,所以在使用前需要确保系统中已经安装了ffmpeg。
安装依赖安装ffmpeg:Windows:可以从ffmpeg官网下载预编译的二进制文件,解压后将其bin目录添加到系统的PATH环境变量中。Linux:以Ubuntu为例,使用以下命令安装:sudo apt-get update sudo apt-get install ffmpeg安装pydub:使用pip进行安装:
pip install pydub示例代码
from pydub import AudioSegment
def amr_to_pcm(amr_file_path, pcm_file_path):
try:
# 读取AMR音频文件
audio = AudioSegment.from_file(amr_file_path, format="amr")
# 保存为PCM格式,这里假设采样宽度为2字节(16位),采样率为8000Hz
audio.export(pcm_file_path, format="s16le", parameters=["-ar", "8000"])
print(f"转换成功,PCM文件已保存到 {pcm_file_path}")
except Exception as e:
print(f"转换失败: {e}")
# 使用示例
amr_file = "input.amr"
pcm_file = "output.pcm"
amr_to_pcm(amr_file, pcm_file) 代码解释导入AudioSegment类:从pydub库中导入AudioSegment类,用于处理音频文件。定义amr_to_pcm函数:该函数接受两个参数,分别是AMR文件的路径和要保存的PCM文件的路径。读取AMR文件:使用AudioSegment.from_file方法读取AMR格式的音频文件。导出为PCM文件:使用audio.export方法将音频保存为PCM格式。format="s16le"表示使用16位小端字节序的PCM格式,parameters=["-ar", "8000"]指定采样率为8000Hz。你可以根据实际需求调整采样率等参数。异常处理:使用try-except块捕获可能出现的异常,并打印错误信息。注意事项要保证输入的AMR文件路径是正确的,且文件存在。可以根据实际需求调整PCM文件的采样率、采样宽度等参数。 网友回复
有没有免费让ai自动帮你接管操作电脑的mcp服务?
mcp为啥用Streamable HTTP 替代 HTTP + SSE?
scratchjr有没有开源的前端html网页版本源代码?
多模态大模型能否根据ui交互视频来来模仿写出前端交互动画效果ui代码?
如何用阿里云oss+函数计算fc+事件总线EventBridge+消息队列+数据库+redis缓存打造一个高并发弹性系统?
阿里云函数计算 FC如何在海外节点搭建一个代理网络?
ai studio中gemini build的代码如何发布到github pages等免费网页托管上 ?
如何在cursor、qoder、trae中使用Claude Skills功能?
有没有不用u盘就能重装系统的开源工具?
python如何固定摄像头实时计算停车场停车位剩余数量?


