0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Whisper语音转文字教程

科技绿洲 来源:Python实用宝典 作者:Python实用宝典 2023-10-16 11:26 次阅读

语音转文字在许多不同领域都有着广泛的应用。以下是一些例子:

1.字幕制作:语音转文字可以帮助视频制作者快速制作字幕,这在影视行业和网络视频领域非常重要。通过使用语音转文字工具,字幕制作者可以更快地生成字幕,从而缩短制作时间,节省人工成本,并提高制作效率。

2.法律文书:在法律领域,语音转文字可以帮助律师和律所将听证会、辩论和其他法律活动的录音转化为文字文档。这些文档可以用于研究、起草文件和法律分析等目的,从而提高工作效率。

3.医疗文档:医疗专业人员可以使用语音转文字技术来记录病人的医疗记录、手术记录和其他相关信息。这可以减少错误和遗漏,提高记录的准确性和完整性,为患者提供更好的医疗服务。

4.市场调查和分析:语音转文字可以帮助企业快速收集和分析消费者反馈、电话调查和市场研究结果等数据。这可以帮助企业更好地了解其目标受众和市场趋势,从而制定更有效的营销策略和商业计划。

总之,语音转文字技术在许多不同的行业和场景中都有着广泛的应用,可以提高工作效率、减少成本和错误,并为企业和个人带来更多商业价值。

语音转文字是一项重要的技术,但市场上大部分语音转文字工具存在诸多问题,效果非常差。如果你需要高效而准确的语音转文字解决方案,你应该考虑使用Whisper。下面是whisper的一段转换示例:

", ".join([i["text"] for i in result["segments"] if i is not None])
# Out[12]: '我赢了啊你说你看到没有没有这样没有减息啊我们后面是降息, 你不要去博这个东西, 我真是害怕你啊, 你不要去博不确定性, 是不是不确定性是我们的敌人, 听到没有朋友们, 好吧, 来朋友们, 你们的预约点好了啊, 朋友们, 你们的预约一定要给我点好了吧, 晚上八点钟是准时开播的, 朋友们关注点好了, 我们盘中视频见啊, 朋友们大家再见'

图片

可以看到,即便是语速这么快的情况下,Whisper 依然实现了近乎完美的转换。

在接下来的教程中,我们将介绍如何使用Whisper来轻松地完成语音转文字任务。

1.准备

开始之前,你要确保Pythonpip已经成功安装在电脑上,如果没有,可以访问这篇文章:超详细Python安装指南 进行安装。

**(可选1) **如果你用Python的目的是数据分析,可以直接安装Anaconda:Python数据分析与挖掘好帮手—Anaconda,它内置了Python和pip.

**(可选2) **此外,推荐大家用VSCode编辑器,它有许多的优点:Python 编程的最好搭档—VSCode 详细指南

请选择以下任一种方式输入命令安装依赖

  1. Windows 环境 打开 Cmd (开始-运行-CMD)。
  2. MacOS 环境 打开 Terminal (command+空格输入Terminal)。
  3. 如果你用的是 VSCode编辑器 或 Pycharm,可以直接使用界面下方的Terminal.
pip install openai-whisper

此外你还需要安装ffmpeg。

安装ffmpeg

Windows:

  1. 进入 http://ffmpeg.org/download.html#build-windows,点击 windows 对应的图标,进入下载界面点击 download 下载按钮,
  2. 解压下载好的zip文件到指定目录
  3. 将解压后的文件目录中 bin 目录(包含 ffmpeg.exe )添加进 path 环境变量中
  4. DOS 命令行输入 ffmpeg -version, 出现以下界面说明安装完成:

图片

**Mac ** (打开终端(Terminal), 用 homebrew 安装):

brew install ffmpeg --with-libvorbis --with-sdl2 --with-theora

Linux:

apt-get install ffmpeg libavcodec-extra

2.使用Whisper进行语音转文字

简单的使用例子:

import whisper
whisper_model = whisper.load_model("large")
result = whisper_model.transcribe(r"C:Userswin10Downloadstest.wav")
print(", ".join([i["text"] for i in result["segments"] if i is not None]))

首先,我们建议使用Whisper的large-v2模型。根据我的实测结果,这个模型的表现非常优秀,它可以识别多种语言,包括中文,而且中文识别效果非常出色。在某些文字转换的场景中,它的表现甚至优于腾讯云、阿里云。

如果你无法下载到模型,可以用我们的模型镜像下载地址:https://pythondict.com/download/openai-whisper-large-v2/

使用前将模型文件放到指定位置:

Windows: C:Users你的用户名.cachewhisper/large-v2.pt

Linux/MacOS: ~/.cache/whisper/large-v2.pt

然后重新运行程序即可得到转换结果。比如我们转换下面这个音频

whisper素材 **, Python实用宝典 ,**29秒

效果如下:

# 公众号:Python实用宝典
# 转载请附带注释
import whisper
whisper_model = whisper.load_model("large")
result = whisper_model.transcribe(r"C:Userswin10Downloadstest.wav")
print(", ".join([i["text"] for i in result["segments"] if i is not None]))
# 我赢了啊你说你看到没有没有这样没有减息啊我们后面是降息, 你不要去博这个东西, 我真是害怕你啊, 你不要去博不确定性, 是不是不确定性是我们的敌人, 听到没有朋友们, 好吧, 来朋友们, 你们的预约点好了啊, 朋友们, 你们的预约一定要给我点好了吧, 晚上八点钟是准时开播的, 朋友们关注点好了, 我们盘中视频见啊, 朋友们大家再见

图片

此外,不建议一次性转换长音频。如果你要转换长度很长的音频,建议先做切割并降低码率。参考我们以前moviepy的文章:

Python 一个快速视频剪辑编辑神器 — Moviepy

3.Whisper转换结果分析

Whisper的生成结果是一个字典:

{'text': '我赢了啊你说你看到没有没有这样没有减息啊我们后面是降息你不要去博这个东西我真是害怕你啊你不要去博不确定性是不是不确定性是我们的敌人听到没有朋友们好吧来朋友们你们的预约点好了啊朋友们你们的预约一定要给我点好了吧晚上八点钟是准时开播的朋友们关注点好了我们盘中视频见啊朋友们大家再见', 'segments': [{'id': 0, 'seek': 0, 'start': 0.0, 'end': 4.8, 'text': '我赢了啊你说你看到没有没有这样没有减息啊我们后面是降息', 'tokens': [50364, 1654, 5266, 95, 2289, 4905, 42405, 16529, 4511, 17944, 17944, 21209, 17944, 6336, 237, 26460, 4905, 15003, 13547, 8833, 1541, 47421, 26460, 50604], 'temperature': 0.0, 'avg_logprob': -0.2088493855794271, 'compression_ratio': 1.649402390438247, 'no_speech_prob': 0.5881261825561523}, {'id': 1, 'seek': 0, 'start': 4.8, 'end': 6.7, 'text': '你不要去博这个东西', 'tokens': [50604, 2166, 11962, 6734, 5322, 248, 15368, 38409, 16220, 50699], 'temperature': 0.0, 'avg_logprob': -0.2088493855794271, 'compression_ratio': 1.649402390438247, 'no_speech_prob': 0.5881261825561523}, {'id': 2, 'seek': 0, 'start': 6.7, 'end': 8.2, 'text': '我真是害怕你啊', 'tokens': [50699, 1654, 6303, 1541, 14694, 21164, 2166, 4905, 50774], 'temperature': 0.0, 'avg_logprob': -0.2088493855794271, 'compression_ratio': 1.649402390438247, 'no_speech_prob': 0.5881261825561523}, {'id': 3, 'seek': 0, 'start': 8.2, 'end': 10.9, 'text': '你不要去博不确定性', 'tokens': [50774, 2166, 11962, 6734, 5322, 248, 1960, 38114, 106, 12088, 21686, 50909], 'temperature': 0.0, 'avg_logprob': -0.2088493855794271, 'compression_ratio': 1.649402390438247, 'no_speech_prob': 0.5881261825561523}, {'id': 4, 'seek': 0, 'start': 10.9, 'end': 13.200000000000001, 'text': '是不是不确定性是我们的敌人', 'tokens': [50909, 23034, 1960, 38114, 106, 12088, 21686, 1541, 15003, 1546, 7017, 234, 4035, 51024], 'temperature': 0.0, 'avg_logprob': -0.2088493855794271, 'compression_ratio': 1.649402390438247, 'no_speech_prob': 0.5881261825561523}, {'id': 5, 'seek': 0, 'start': 13.200000000000001, 'end': 14.4, 'text': '听到没有朋友们', 'tokens': [51024, 31022, 4511, 17944, 19828, 9497, 51084], 'temperature': 0.0, 'avg_logprob': -0.2088493855794271, 'compression_ratio': 1.649402390438247, 'no_speech_prob': 0.5881261825561523}, {'id': 6, 'seek': 0, 'start': 14.4, 'end': 15.1, 'text': '好吧', 'tokens': [51084, 40221, 51119], 'temperature': 0.0, 'avg_logprob': -0.2088493855794271, 'compression_ratio': 1.649402390438247, 'no_speech_prob': 0.5881261825561523}, {'id': 7, 'seek': 0, 'start': 15.1, 'end': 15.6, 'text': '来朋友们', 'tokens': [51119, 6912, 19828, 9497, 51144], 'temperature': 0.0, 'avg_logprob': -0.2088493855794271, 'compression_ratio': 1.649402390438247, 'no_speech_prob': 0.5881261825561523}, {'id': 8, 'seek': 0, 'start': 15.6, 'end': 17.0, 'text': '你们的预约点好了啊', 'tokens': [51144, 29806, 1546, 12501, 226, 16853, 99, 12579, 12621, 4905, 51214], 'temperature': 0.0, 'avg_logprob': -0.2088493855794271, 'compression_ratio': 1.649402390438247, 'no_speech_prob': 0.5881261825561523}, {'id': 9, 'seek': 0, 'start': 17.0, 'end': 17.3, 'text': '朋友们', 'tokens': [51214, 19828, 9497, 51229], 'temperature': 0.0, 'avg_logprob': -0.2088493855794271, 'compression_ratio': 1.649402390438247, 'no_speech_prob': 0.5881261825561523}, {'id': 10, 'seek': 0, 'start': 17.3, 'end': 18.900000000000002, 'text': '你们的预约一定要给我点好了吧', 'tokens': [51229, 29806, 1546, 12501, 226, 16853, 99, 48161, 49076, 12579, 12621, 6062, 51309], 'temperature': 0.0, 'avg_logprob': -0.2088493855794271, 'compression_ratio': 1.649402390438247, 'no_speech_prob': 0.5881261825561523}, {'id': 11, 'seek': 0, 'start': 18.900000000000002, 'end': 21.0, 'text': '晚上八点钟是准时开播的', 'tokens': [51309, 50157, 33453, 12579, 50064, 1541, 6336, 228, 15729, 18937, 49993, 1546, 51414], 'temperature': 0.0, 'avg_logprob': -0.2088493855794271, 'compression_ratio': 1.649402390438247, 'no_speech_prob': 0.5881261825561523}, {'id': 12, 'seek': 0, 'start': 21.0, 'end': 22.6, 'text': '朋友们关注点好了', 'tokens': [51414, 19828, 9497, 28053, 26432, 12579, 12621, 51494], 'temperature': 0.0, 'avg_logprob': -0.2088493855794271, 'compression_ratio': 1.649402390438247, 'no_speech_prob': 0.5881261825561523}, {'id': 13, 'seek': 0, 'start': 22.6, 'end': 24.1, 'text': '我们盘中视频见啊', 'tokens': [51494, 15003, 5419, 246, 5975, 40656, 39752, 23813, 4905, 51569], 'temperature': 0.0, 'avg_logprob': -0.2088493855794271, 'compression_ratio': 1.649402390438247, 'no_speech_prob': 0.5881261825561523}, {'id': 14, 'seek': 0, 'start': 24.1, 'end': 25.400000000000002, 'text': '朋友们大家再见', 'tokens': [51569, 19828, 9497, 6868, 44176, 51634], 'temperature': 0.0, 'avg_logprob': -0.2088493855794271, 'compression_ratio': 1.649402390438247, 'no_speech_prob': 0.5881261825561523}], 'language': 'zh'}

text参数是没有做任何分词处理的纯语音原文本。

我们要重点关注的是segments参数。segments参数对音频内人物语言做了"分段"操作,比如这一段话:

{
  'id': 1,
  'seek': 0,
  'start': 4.8,
  'end': 6.7,
  'text': '你不要去博这个东西',
  'tokens': [50604, 2166, 11962, 6734, 5322, 248, 15368, 38409, 16220, 50699],
  'temperature': 0.0,
  'avg_logprob': -0.2088493855794271,
  'compression_ratio': 1.649402390438247,
  'no_speech_prob': 0.5881261825561523
}

它就相当于人一样,去一帧帧校对每个词说话的时间:start是起始时间,end是结束时间。即"你不要去博这个东西"发生在音频的4.8秒到6.7秒之间。其他参数:

temperature 是指在语音转文本模型生成结果时,控制输出随机性和多样性的参数。

avg_logprob参数是语音转文字模型预测的置信度评分的平均值。

compression_ratio参数是指音频信号压缩的比率。

no_speech_prob参数是指模型在某段时间内检测到没有语音信号的概率。

重点在于如何应用。start和end参数你可以用来直接生成视频的字幕。大大提高生产效率。

置信度参数你可以用来提高识别准确率,如果说置信度一直不高,可以单独拎出来人工优化。

总之,Whisper的Large-v2模型绝对是目前中文语音转文字的顶级存在,有兴趣的朋友赶紧试试吧。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 语音
    +关注

    关注

    3

    文章

    361

    浏览量

    37627
  • 编辑器
    +关注

    关注

    1

    文章

    788

    浏览量

    30229
  • 数据分析
    +关注

    关注

    2

    文章

    1353

    浏览量

    33738
  • Whisper
    +关注

    关注

    0

    文章

    2

    浏览量

    4958
收藏 人收藏

    评论

    相关推荐

    看国内外语音交互厂商如何定位人工智能

    语音交互其实可以分成两块:语音识别和语义识别。所谓语音识别,就是把人说的语音转化成计算机可读的输入,比如微信中的语音
    发表于 06-07 10:00 3053次阅读

    语音转文字用这个操作方法,几秒钟实现音频转换文字

    `  具体操作方法:  第二步:找到语音转文字功能后我们就来到音频文件转文字页面,在这里我们有两种添加文件的方法,一种是直接点击页面中的【选择文件夹】另一种就是把准备好的文件拖拽到选区内。方法简单
    发表于 11-08 19:22

    会议记录太难?是你没选好手机录音转文字的好帮手

    相信很多上班族都遇到这样的事情,领导让帮忙记录会议,偷懒用手机录音,却要交文字版,这可怎么办?自己重新听写一遍肯定来不及了,小编在这里告诉大家,用录音转文字助手这个APP就能分分钟解决。首先我们在
    发表于 05-19 14:35

    TTS文字语音模块的学习资料分享

    引言这个计划到今天也就完成了,原本按照计划是要实行三步走策略:1.TTS文字语音模块的学习2.LD3320 语音识别模块的学习3.单片机吧两者结合起来骚想法之后浮现了一个骚想法:我只接就把
    发表于 02-15 06:01

    基于Visual_Baisc旋转文字效果演示实验

    基于Visual_Baisc的旋转文字效果演示实验
    发表于 09-26 07:54

    谷歌AI语音服务新增7种语言和31种声音

    2月24日消息,为了扩展AI语音服务的市场,谷歌除了加强语音辨识模型、语言支持数量和声音种类之外,也调整了语音服务的价格。谷歌更新文字语音
    的头像 发表于 03-01 10:37 3954次阅读

    cencrack识别图片转文字工具V2.8版应用程序免费下载

    cencrack识别图片转文字工具是一款免费实用的OCR图片转文字的软件-办公必备,软件操作简单,免安装,程序微小,功能强大。软件功能强大,操作简单,省去了安装的步骤。
    发表于 07-15 08:00 0次下载

    搜狗智能录音笔C1可实现将语音准确转换为文字

    搜狗智能录音笔C1解决方案集成了便携式低功耗蓝牙语音录制设备和专属的智能手机APP,支持高清录音、录音转文字和同声传译等,用于采访、笔记记录、会议和培训等场景。这款录音笔配备了全数字高灵敏麦克风
    的头像 发表于 08-19 01:05 5175次阅读

    谷歌Live Transcribe语音识别技术可转文字

    谷歌在其开源博客中宣布开源 Android语音识别转录工具——Live Transcribe的语音引擎,它可以将语音或对话实时转录为文字,还能够为听障人士提供帮助。
    发表于 08-23 10:31 1234次阅读

    微信新iOS版本语音转文字功能上线

    微信 iOS 版本上线一个新功能,和之前的语音转文字功能不同,这次的转化功能在发送时起作用,也就是说,用户在发送微信语音时,通过上滑可以将语音转文字
    发表于 08-26 10:04 1129次阅读

    微信偷偷上线了这个超好用的支持三种语音文字功能

    微信正式上线发送语音转文字功能,支持三种语言,网友:太方便
    的头像 发表于 08-29 10:02 4056次阅读

    谷歌研发语音识别转文字工具Live Transcribe

    谷歌在其开源博客中宣布开源 Android语音识别转录工具——Live Transcribe的语音引擎,它可以将语音或对话实时转录为文字,还能够为听障人士提供帮助。
    发表于 09-04 16:24 2629次阅读

    桌面版微信v2.9测试版体验 新增语音消息自动转文字功能

    继微信iOS版正式加入“深色模式”后,桌面版微信也推出了全新的v2.9测试版。同样带来了一项大家迫切需要的功能——语音自动转文字。测试了一下,效果还好,此外还有一些其他变化,一起来看吧。
    的头像 发表于 03-30 09:46 1795次阅读
    桌面版微信v2.9测试版体验 新增<b class='flag-5'>语音</b>消息自动<b class='flag-5'>转文字</b>功能

    讯飞会议宝S8提升语音转文字的速度,开启高效记录新时代

    转写赛道,科大讯飞旗下的智能语音设备讯飞会议宝S8能够有效提升语音转文字的速度,进一步为文字工作者的记录场景赋能,开启高效记录新时代。 对于有高频
    的头像 发表于 09-20 10:46 1.2w次阅读

    OpenAI官宣把ChatGPT API开放

        3月1号,OpenAI把ChatGPT API 正式开放;就在竞争对手越加追赶的时候,OpenAI宣布正式推出面向商业用户的ChatGPT和Whisper语音转文字API,而且把价格打得
    的头像 发表于 03-06 18:48 2965次阅读
    OpenAI官宣把ChatGPT API开放