背景

寒假的时候,由于up非常喜欢剪辑英雄联盟视频,但是在剪辑的时候会遇到没有英雄台词原声的问题,所以就去各大网站上找,但是遇到的问题是要么就是英雄台词不全,要么就是其他皮肤的原声没有。后来在某多商城里看到有人在卖这种原声,仅需3大洋,但是如果直接买的话,就失去了这种数据挖掘的乐趣了。所以我就走向了英雄联盟台词语音包数据挖掘的道路。

项目地址:点击跳转至gitee

话不多说,直接看项目。

工具

正所谓工欲善其事,必先利其器,这次项目我们需要用到其中一个工具Ravioli Explorer。工具下载链接:点击跳转 提取码:kgiu

下载压缩包并且解压之后,打开下图软件:

打开之后的界面是这样的,我们后面会用到。

作用:该工具的作用是打开英雄联盟文件包中的语音特定文件,因为不使用这个工具,直接打开是打开不了这些文件的(如.client),我们需要的就是用这个工具将一些特定的语音文件格式(如.wem)先转成可以供电脑可以直接播放的(.wav)文件。

另一个工具是百度智能云,它是我们接口调用的平台,我们需要先使用百度账号领取一些免费的子资源。

点击跳转百度智能云

按照上述照片领取相关资源,把能够免费领取的都领取了。

百度智能云接口使用方法:

①先创建应用,然后选取语音技术选项的全部

②此时就可以看到API列表中出现了下列API

③记住AppID,APIKey以及SecretKey。后面调用的时候需要在放在代码里。

准备工作

英雄台词源文件地址:

1.打开目录

2.按照一下路径找到下图(一般都是这个路径D:\WeGameApps\英雄联盟\Game\DATA\FINAL\Champions)

如下图,命名格式是英雄名+语言+后缀名

示例,下面是剑魔(Aatrox)的台词语音包

3.将中文英雄台词原文件拖入Ravioli Explorer(这里以永恩为示例,因为永恩皮肤比较少,需要识别的语音也少一点)(Yone.zh_CN.wad.client)

点击yes

出现了wem后缀的文件

点击Extract

然后选择wav格式,选择想要将wav文件导出的路径,最后点击OK。

等他解码和编码完成之后,英雄台词的wav语音文件就得到了,但是这时候我们就会发现,这些语音的重命名都是字母和数字,我们根本就不知道某一条语音的内容是什么。

这时候我们批量语音识别就会发挥出作用了,下面我们就可以调用百度接口然后对语音进行语音识别工作了。

代码部分

项目结构:

项目步骤:

1.将wav语音文件转化成pcm语音文件。

根据百度接口的参考文档:点击跳转 推荐使用的文件格式是pcm,估计是官方测试下使用该文件的识别准确度比较高,所以我们也就稍微花一点时间把wav转化成pcm格式。

import ffmpy3
import osdef file_name(file_dir):  # 获取文件name_list1 = []file_list1 = []for root, dirs, files in os.walk(file_dir):if len(files) != 0:name_list1.append(root)file_list1.append(files)return fileswav_path = r"..\speech_to_text\yongen\wav"
pcm_path = r"..\speech_to_text\yongen\pcm"voice_list = file_name(wav_path)
length = len(voice_list)
for n,i in enumerate(voice_list):ff = ffmpy3.FFmpeg(inputs={wav_path+"\\"+i:None},outputs={pcm_path+"\\"+i[:-3]+"pcm":"-f s16le -ar 16000 -ac 1 -acodec pcm_s16le"})ff.run()print("一共%d个文件,第%d个wav语音转化为pcm完成"%(length,n+1))

运行结果:

此时我们得到了一批顺序和wav文件是一样的pcm文件。

2.使用接口对pcm文件进行语音识别,然后用识别结果(文字)对wav文件进行重命名,这样我们就得到了一堆识别好的,以语音内容为重命名的wav语音文件。

#函数准备
import os
def file_name(file_dir):  # 获取文件name_list1 = []file_list1 = []for root, dirs, files in os.walk(file_dir):if len(files) != 0:name_list1.append(root)file_list1.append(files)return filesdef get_file_content(filePath):with open(filePath, 'rb') as fp:return fp.read()# 新建AipSpeech实例
from aip import AipSpeech""" 你的 APPID AK SK """
APP_ID = 'yourappid'
API_KEY = 'yourapikey'
SECRET_KEY = 'yoursecretkey'client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
wav_path = r"..\speech_to_text\yongen\wav"
pcm_path = r"..\speech_to_text\yongen\pcm"
voice_list = file_name(wav_path)length = len(voice_list)for n,i in enumerate(voice_list):strs = client.asr(get_file_content(pcm_path+"\\"+i[:-3]+"pcm"), 'pcm', 16000, {'dev_pid': 1537,})['result'][0].strip("。")old_name = wav_path+"\\"+inew_name = wav_path+"\\"+str(n+1)+strs+".wav"os.rename(old_name, new_name)print("一共%d个语音,当前第%d个语音已重命名完成。"%(length,n+1))

运行示例:

从结果上来看,也许有些许错别字或者是偏离正确文字,但总比一堆英文和数字好吧,其他英雄和皮肤的语音包文件同样适用这个方法去挖掘出我们想要的语音。同时,我在百度很多文章看到,其他游戏例如某荣耀也是可以使用该方法进行语音包挖掘的。我们在需要使用某个语音时,可以根据粗检索加上自己二次检索就可以找到我们想要的那个语音了。

总结

以上就是该项目的全部内容,总的来说还是比较有趣的。

如果其他问题,请私信我,谢谢。

英雄联盟台词语音包数据挖掘(基于python调用百度接口对台词进行语音识别)相关推荐

  1. python调用百度接口实现ocr识别_Python调用百度OCR实现图片文字识别的示例代码

    百度AI提供了一天50000次的免费文字识别额度,可以愉快的免费使用!下面直接上方法: 首先在百度AI创建一个应用,按照下图创建即可,创建后会获得如下: 创建后会获得如下信息: APP_ID = '* ...

  2. 地理位置与经纬度之间相互转换(基于python调用百度API)

    百度API 位置与经纬度相互转换 每天限制6000次 百度API平台 https://lbsyun.baidu.com/apiconsole/key#/home 1.pip install 安装相关p ...

  3. Python调用百度接口(情感倾向分析)和讯飞接口(语音识别、关键词提取)处理音频文件...

    本示例的过程是: 1. 音频转文本 2. 利用文本获取情感倾向分析结果 3. 利用文本获取关键词提取 首先是讯飞的语音识别模块.在这里可以找到非实时语音转写的相关文档以及 Python 示例.我略作了 ...

  4. 基于javaweb调用百度接口实现人脸识别登陆功能

    百度开放平台有很多新鲜的玩法,有人脸识别,文字识别,图像识别,,,各种各样的接口,忍不住注册了一个玩玩. 注册一个百度开发者账号,然后就可以'折腾'了~ 拿人脸识别作为例子,可以先注册个人脸识别程序体 ...

  5. python调用百度接口实现ocr识别_Python 3调用百度OCR API实现剪贴板文字识别

    本程序调用百度OCR API对剪贴板的图片文字识别,配合CaptureScreen软件,可快速识别文字. #!python3 import urllib.request, urllib.parse i ...

  6. python调用lib_基于python调用libvirt API

    基于python调用libvirt API 1.程序代码 #!/usr/bin/python import libvirt import sys def createConnection(): con ...

  7. 基于Python的百度AI人脸识别API接口(可用于OpenCV-Python人脸识别)

    基于Python的百度AI人脸识别API接口(可用于OpenCV-Python人脸识别) 资源: download.csdn.net/download/weixin_53403301/43644312 ...

  8. 从入门到入土:基于Python实现百度查询返回结果真实url读取及域名读取

    此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益.不合适引用,自当删除! 若 ...

  9. 【优秀课设】基于Python的百度API的OCR名片识别【含完整API账户】

    基于Python的百度API的OCR名片识别[含完整API账户] API账户:(AK及SK) client_id ='WiXDt5e70NI5w0qSeoUBZClZ' client_secret = ...

最新文章

  1. java 2分钟_java – 为什么我的应用程序启动时间超过2分钟?
  2. iOS 利用dSYM定位crash
  3. linux系统编程需要什么,若想成为一名Linux下编程高手,必须能对各种系统调用有透彻的了解...
  4. 循序渐进学Python2变量与输入
  5. 牛顿法与拟牛顿法,SDM方法的一些注记
  6. html:(12):pre和ul-li
  7. 少写点if-else吧,它的效率有多低你知道吗?
  8. JavaScript parseInt() 函数
  9. ios授权登录过程中一直提示“没有安装qq”
  10. python带参数的装饰器的作用_Python带参数的装饰器运行原理解析
  11. 吴恩达神经网络和深度学习-学习笔记-36-网络中的网络以及1×1卷积
  12. SQL Server 2012 下载和安装详细教程
  13. SwiftUI vs 故事板
  14. sql server中binary怎么得到char类型
  15. python自定义函数中return可以返回多个值_python函数return返回多个值
  16. python echarts城市热力图_echarts绘制各省、市、区的热力图
  17. 人人都是秋名山车神——Unity实现简化版卡丁车漂移
  18. 计算机网络 万维网的文档
  19. JavaSE——柏羲
  20. win7打开网络无计算机,Win7电脑系统IPV6无网络访问权限解决方法

热门文章

  1. FCTF公开赛 F1A4安全成立一周年庆典赛(4月5号)
  2. (私人收藏)盛大彩虹岛最全素材集合(练习必备)
  3. python 苹果手机自动重启_在*nix系统中的python中自动重启守护进程
  4. 关于我18岁这一年的概括加总结
  5. build目录下面某个文件无法删除??
  6. 过年回家,和女朋友一起玩的android游戏,单身20年的手速居然输了!
  7. 服务注册与发现组件 Eureka 应用实战
  8. 饭店招两个服务员、洗碗工
  9. 用计算机比喻社会的句子,形容电脑卡的经典句子a
  10. PHP 使用GD库生成验证码 在图像上绘制汉字