百度_音频转文字

百度_音频转文字_第1张图片
手机49kbps 转换比特率256Kpbs
{‘corpus_no’: ‘7045177033217452815’, ‘err_msg’: ‘success.’, ‘err_no’: 0, ‘result’: [‘今天下午去开会今天下午去开会’], ‘sn’: ‘858605479691640333103’}
{‘corpus_no’: ‘7045177041635399899’, ‘err_msg’: ‘success.’, ‘err_no’: 0, ‘result’: [‘今天下午去开会今天下午去开会’], ‘sn’: ‘683207632331640333105’}

from aip import AipSpeech
from moviepy.editor import AudioFileClip

# 语音三个参数:声道数、取样频率和量化位数;声道数:单声道、双声道;
# 取样频率:秒采样次数;量化位数:bit单次采样数据,8bit、16bit、24bit和32bit
# 例:CD储存声音信号是双声道、44.1kHz、16bit

```java
def avi_hebing():
    # 1、导入视频
    from moviepy.editor import *
    #1 读取视频1
    videoclip_1 = VideoFileClip("one.mp4")
    clipSpeed = videoclip_1.speedx(2)#倍速
    clip = clipSpeed.subclip(0, 50)# 截取前50秒视频
    # 1.1.0 将源视频中指定范围子窗口内容输出到保存的视频文件。
    clip.crop(0, 278, 540, 580).write_videofile(r"F:\video\WinBasedWorkHard_crop.mp4")
    #保存
    clipSpeed.write_videofile(r"F:\video\fansNote_speed2.mp4")  # 保存

    #2提取音频分
    audio_1 = videoclip_1.audio #单独提取音频
    video_audio_clip = videoclip_1.audio.volumex(0.8) # 提取视频音频,并调小音量
    #2.1背景音乐
    audio_clip = AudioFileClip(r'F:\test\video\aaa\moviepy\mp3\test.mp3').volumex(0.5)
    audio = afx.audio_loop(audio_clip, duration=videoclip_1.duration)#设背景音乐循环,时间与视频1时间一致
    # 1.1.4视频声音和背景音乐,音频叠加
    audio_clip_add = CompositeAudioClip([video_audio_clip,audio])

    #3 读取视频、合并视频
    videoclip_2 = VideoFileClip("two.mp4") #读取视频
    final_video = videoclip_2.set_audio(audio_clip_add) #音频+视频2合并
    final_video.write_videofile("video_result.mp4") #输出新视频


def avi_to_txt():
    fielname_mp4="kaihui.mp4" #原始视频文件名
    my_audio_clip = AudioFileClip(fielname_mp4)#读取文件

    #2、 提取音频并保存(# pcm、wav、amr、m4a)
    fielname_wav='kaihui.wav'#保存的wav文件名
    # print(my_audio_clip.duration, my_audio_clip.buffersize,my_audio_clip.nchannels, my_audio_clip.fps)
    # my_audio_clip.write_audiofile(fielname_wav)

    my_audio_clip.write_audiofile(fielname_wav, fps=8000, nbytes=2, buffersize=20000,
                            codec=None, bitrate=None, ffmpeg_params=None,
                            write_logfile=False, verbose=True, logger='bar')
    # buffersize = 200000, nbytes = 2, fps = 44100
    # 8, 000Hz 电话采样率
    # 11, 025 Hz 22, 050 Hz - 无线电广播所用采样率
    # 32, 000 Hz - miniDV数字视频camcorder、DAT(LP  mode)所用采样率
    # 44, 100  Hz - 音频CD, 也常用于MPEG - 1 音频(VCD, SVCD, MP3)所用采样率
    # 47, 250   Hz - Nippon  Columbia(Denon)开发的世界上第一个商用PCM录音机所用采样率
    # 48, 000    Hz - miniDV、数字电视、DVD、DAT、电影和专业音频所用的数字声音所用采样率
    # 50, 000  Hz - 二十世纪七十年代后期出现的3M和Soundstream开发的第一款商用数字录音机所用采样率
    # 50, 400  Hz - 三菱X - 80 数字录音机所用所用采样率
    # 96, 000   或者192, 000 Hz - DVD - Audio、一些LPCM DVD音轨、Blu - ray    Disc(蓝光盘)音轨、和HD - DVD(高清晰度DVD)音轨所用所用采样率
    # 2.8224    MHz - SACD、索尼和飞利浦联合开发的称为Direct    Stream    Digital的1位sigma - delta    modulation过程所用采样率。

    # write_videofile方法用于将视频剪辑输出到文件
    # write_audiofile(fielname_wav,fps=None, codec=None,bitrate=None, audio_fps=16000)
    # write_videofile(self, filename, fps=None, codec=None,
    #                         bitrate=None, audio=True, audio_fps=44100,
    #                         preset="medium",
    #                         audio_nbytes=4, audio_codec=None,
    #                         audio_bitrate=None, audio_bufsize=2000,
    #                         temp_audiofile=None,
    #                         rewrite_audio=True, remove_temp=True,
    #                         write_logfile=False, verbose=True,
    #                         threads=None, ffmpeg_params=None,
    #                         logger='bar')
    # filename:保存视频文件名,只要是ffmpeg支持的视频文件如 .ogv, .mp4, .mpeg, .avi, .mov等都可以
    # fps:帧率,每秒编码的帧数
    # codec:图像编解码器,ffmpeg支持解码器。扩展名“.mp4”、“.ogv”、“.webm”,则相应地设置编解码器,其他扩展名,须设置输出文件名。常用编解码器如下:
    # √. ‘libx264’:视频压缩效果好,MP4缺省编解码器,质量bitrate参数调节
    # √. ‘mpeg4’:可选MP4编解码器,可替代’libx264’,可获更好视频质量
    # √.‘rawvideo’:完美视频质量,文件巨大,对应视频文件为’.avi’
    # √. ‘png’:完美视频质量,视频文件为’.avi’,比’rawvideo’小
    # √. ‘libvorbis’:完全开放、免费编解码器,不错视频格式,对应视频文件为’.ogv’
    # √. ‘libvpx’:很适合HTML5使用的网络视频轻量级开源解码器,视频文件为’.webm’
    # bitrate:输出视频比特率,即码率BPS(Bits Per Second),每秒传送数据位数
    # audio:可为True、False或文件名,如True且剪辑附加音频,则音频作为视频的音频保存,如False则不保存音频,如为音频文件名则此音频文件将作为视频的音频
    # audio_fps:声音的采样频率
    # preset:设置FFMPEG用于优化压缩时间。字符串类型,可选:ultrafast、superfast、veryfast、faster、fast、medium、slow、slower、veryslow、 placebo。请注意,这不会影响视频的质量,只影响视频文件的大小。所以如果赶时间而文件大小不是很重要可以设置为ultrafast
    # audio_nbytes:音频采用位数,对应基于字节为单位是声道数;
    # audio_codec:音频解码器,如’.mp3’的’libmp3lame’、‘ogg’的’libvorbis’、 ‘m4a’的’libfdk_aac’、 ‘pcm_s16le’ 16位声音和’pcm_s32le’的32位声音。默认值为“libmp3lame”,除非视频扩展名为“ogv”或“webm”,在这2种情况下,默认值为“libvorbis”。
    # audio_bitrate:音频比特率,字符串形式,如“50k”、“500k”、“3000k”,用于将确定输出文件中音频的大小/质量。注意,这是一个指示性目标,输出文件比特率不一定会按此设置。
    # audio_bufsize:音频缓冲区大小
    # temp_audiofile:如输出由音频,该参数用于指定--要生成并合并到电影中的临时音频文件的名称,如果没有指定则用缺省模式临时文件名
    # rewrite_audio:这个参数目前没有作用,可能为了兼容前版本
    # remove_temp:是否删除临时文件
    # write_logfile:为True,为音频和视频输出记录日志文件。日志文件将以“.log”结尾,包含输出文件的名称
    # verbose:已经废弃使用,留下来是为了兼容性,以前用于打开/关闭消息。现在使用logger=None。
    # threads:用于ffmpeg的线程数,可以加快多核计算机上视频输出的速度
    # ffmpeg_params:需额外传递其他ffmpeg参数,用列表传递,形如:[’-option1’,‘value1’,’-option2’,‘value2’]
    # logger:字符串类型,"bar"表示进度条、None 表示不设置、或任何程序日志记录器的名字
    # ————————————————
    # 版权声明:本文为CSDN博主「LaoYuanPython」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    # 原文链接:https://blog.csdn.net/LaoYuanPython/article/details/114589561


    #2、wav转pcm
    import numpy as np
    def wav2pcm(wavfile, pcmfile, data_type=np.int16):
        f = open(wavfile, "rb")
        f.seek(0)
        f.read(44)
        data = np.fromfile(f, dtype= data_type)
        data.tofile(pcmfile)

    pcmfile_pcm='kaihui.pcm'#设置保存文件名
    wav2pcm(fielname_wav, pcmfile_pcm, data_type=np.int16)#保存

    # 申请百度语音识别
    APP_ID = ''
    API_KEY ='GYKqlTqfnxFHokkfEujXbuDW'
    SECRET_KEY ='23zkptXIwi0YnWbfpll2s5jhFkKxZuSR'
    client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)

    # 读取文件
    def get_file_content(file_path):
        with open(file_path, 'rb') as fp:
            return fp.read()

    # 识别本地文件
    fielname_wav='kaihui.wav' ## fielname_wav='16k.wav'百度测试文件
    result = client.asr(get_file_content(fielname_wav), 'wav', 16000, {'dev_pid': 1536})
    # result = client.asr(get_file_content(fielname_wav), 'wav', 713125, {'dev_pid': 1536})
    print(result)

    # 识别本地文件
    # pcmfile_pcm='16k.pcm' #百度提供初期测试
    test1 = client.asr(get_file_content(pcmfile_pcm), 'pcm', 16000, {'dev_pid': 1536, })
    # 参数1: speech 音频文件流 包含语音Buffer对象, 文件格式:pcm 或 wav 或 amr,pcm最好
    # 参数2: format 文件格式,包括pcm(不压缩)、wav、amr
    # 参数2: rate 音频文件采样率 如使用FFmpeg命令转换,是16000
    # 参数4: dev_pid 语言id 默认1537(普通话 输入法模型)
    print(test1)

你可能感兴趣的:(python,音视频,百度,语音识别)