一种为MP3生成字幕文件的方法

在云计算、大数据和人工智能如此火爆的当下,各种提供语音识别的云服务层出不群。近日,尝试制作了基于IBM Watson Speech to Text service辅助生成英语MP3字幕文件的工具,觉得还不错,特共享如下。

工具使用C#编制,具体思路如下:

第1步,使用内嵌的WebBrowser访问IBM有关服务网站:https://speech-to-text-demo.ng.bluemix.net/,界面如下方所示:


在该步骤下,需要手动点击网页的“Upload Audio File”按钮选择上传要配字幕的MP3音频文件。上传成功后,网站即开始自动识别过程。等到识别完成后,还需要手动点击下方的Word Timings and Alternatives,即可看到按顺序识别到的单词及对应的开始时刻。

注:(1)界面上方的保存按钮,可以将识别后的网页内容保存成本地htm文件,下一次可点击载入按钮直接载入,而无需重复识别过程。

(2)当点击界面下方的“下一步”按钮时,程序会自动扫描网页内容,生成由单词和时刻信息组成的单词时刻字典列表,这里记作lstDict,其类型为List<KeyValuePaire<string, string>>,列表中每个元素为键值对,Key存放单词,Value存放时刻信息。

第2步:载入英文原稿。如果没有原稿,可以在第1步网站的text标签页下将识别到的文本复制过来。界面如下图所示:

在该步骤下,原文尽量符合下面的要求:

(1)与音频文字完全对应。

(2)每行包含的单词尽可能长,这样可提高匹配率。

(3)避免出现非英文字符,特别是中文或非半角符号。

第3步,生成字幕。程序会按顺序将录入的原文逐行与第1步识别到的单词时刻字典进行匹配,以获得每行字幕的开始时刻。大概的思路如下:

(1)分词:使用正则表达式,将当前行拆分成单词数组。代码如下:

string[] a = Regex.Split(value, @"\s+");

(2)去噪:将数组中的每个单词中不符合英文习惯的符号去除或替换成符合英文规范的符号。

(3)匹配:将数组与第1步识别到的单词时刻字典lstDict进行匹配,以获得该行字幕的开始时刻。

下图给出识别结果界面:


这时候,注意到图中红色标注的时刻明显不正确,可以通过界面上方的“纠正”功能,手动选择对应的时刻。界面如下图所示:



至此,字幕信息匹配完毕,可点击下方的保存按钮将其存成对应格式的字幕文件,目前提供了对.lrc和.smi格式的支持。

注:点击界面上方的播放按钮可以选择音频文件实时播放并查看生成的字幕效果。

最后附上下载地址:

https://download.csdn.net/download/alvin_2005/10530316

猜你喜欢

转载自blog.csdn.net/alvin_2005/article/details/80935531
今日推荐