首页 > 编程知识 正文

python文字转音频文件,python修改音频文件并保存

时间:2023-05-05 21:41:53 阅读:218345 作者:2206

 

Online Audio Converter,这是一款转换音频文件的免费应用。该应用支持所有格式,处理速度快,而且无需安装。https://online-audio-converter.com/cn/ (无意中看到的一个免费的线上音频文件格式转化应用)

 

该代码用于音频格式转化;
已实现的方法有,其他格式音频文件转为单声道、16000Hz采样率、数据类型(int16,float32)
若是想转化为其他格式,可以自行在网上寻找FFmpeg的用法。

"""ffmpeg命令:-i 输入音频文件名 -acodec 设置音频的编码或解码器, 具体可选项参考:https://developer.qiniu.com/dora/kb/1432/avthumb-parameter-acodec-format-and-explanation 这里用的 pcm_f32le 表示,PCM-32位浮点数 little-endian(小端) -ac 音频文件的通道数 -ar 音频文件的采样率 最后面是输出的音频文件名""" # coding=utf-8"""该代码用于音频格式转化;已实现的方法有,其他格式音频文件转为单声道、16000Hz采样率、数据类型(int16,float32)若是想转化为其他格式,可以自行在网上寻找FFmpeg的用法"""from ffmpy3 import FFmpegimport osimport scipy.io.wavfile as wavdef read_wav(audio_path): '''读取音频文件wav,返回时间序列y和采样率sr''' sr, y = wav.read(filename=audio_path) #读取音频文件,返回音频采样率和时间序列 return y, srdef other_to_wav_float32(src_dir, dst_dir): """ 将其他格式的音频文件转化为wav格式且float32数据类型、单声道、16000Hz采样率 root中包含根目录 src_dir 以及其内的所有文件夹的绝对路径名; dirs中是root中每一文件夹内的文件夹名字; files中是root中每一文件夹内的文件名 """ for root, dirs, files in os.walk(src_dir): for name in files: # print(os.path.join(root, name)) # 打印出src_dir目录下所有的文件的绝对路径名 audio_name_src = os.path.join(root, name) audio_name_dst = os.path.join(dst_dir, name.split('.')[0]+'_.wav') ff = FFmpeg( inputs={audio_name_src: None}, outputs={audio_name_dst: ['-acodec', 'pcm_f32le', '-ac', '1', '-ar', '16000']} ) # 将other格式文件转化为‘pcm-16位 float、1通道、16000Hz采样率的wav文件' # print(ff.cmd) # 打印出所执行的命令,如果在shell中运行的话,就是该命令形式 ff.run()def other_to_wav_int16(src_dir, dst_dir): """ 将其他格式的音频文件转化为wav格式且int16数据类型、单声道、16000Hz采样率 root中包含根目录 src_dir 以及其内的所有文件夹的绝对路径名; dirs中是root中每一文件夹内的文件夹名字; files中是root中每一文件夹内的文件名 """ for root, dirs, files in os.walk(src_dir): for name in files: # print(os.path.join(root, name)) # 打印出src_dir目录下所有的文件的绝对路径名 audio_name_src = os.path.join(root, name) audio_name_dst = os.path.join(dst_dir, name.split('.')[0]+'.wav') ff = FFmpeg( inputs={audio_name_src: None}, outputs={audio_name_dst: ['-acodec', 'pcm_s16le', '-ac', '1', '-ar', '16000']} ) # 将other格式文件转化为‘pcm-16位 float、1通道、16000Hz采样率的wav文件' # print(ff.cmd) # 打印出所执行的命令,如果在shell中运行的话,就是该命令形式 ff.run()def single_test(audio_path_src, audio_path_dst): """ 将其他格式的音频文件转化为wav格式且int16数据类型、单声道、16000Hz采样率 """ ff = FFmpeg( inputs={audio_path_src: None}, outputs={audio_path_dst: ['-acodec', 'pcm_s16le', '-ac', '1', '-ar', '16000']} ) # 将other格式文件转化为‘pcm-16位 float、1通道、16000Hz采样率的wav文件' # print(ff.cmd) # 打印出所执行的命令,如果在shell中运行的话,就是该命令形式 ff.run()if __name__ == "__main__": audio_path_src = r'./audio_test/no.wav' audio_path_dst = r'./audio_test/9_.wav' single_test(audio_path_src, audio_path_dst)

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。