舍得英语魔法学苑

 找回密码
 注册
查看: 2993|回复: 3

折腾出平生第一个C++程序

[复制链接]
  • TA的每日心情
    开心
    2020-6-17 22:21
  • 签到天数: 70 天

    [LV.6]常住居民II

    舍得 发表于 2014-12-15 21:27:52 | 显示全部楼层 |阅读模式
    实在是被逼得没办法了。
    事情的起因是这样的。最近要录制一组视频,视频需要配音,自己配的话(去年视频月活动时是自己配的音),操作起来太过麻烦。这一次为了提供视频制作效率,决定用机器合成。
    其实2010年舍得制作的《SuperMemo UX课程制作实例》视频用的就是机器合成的,当时选择的是科大讯飞InterPhonic 5.0,因为这是业界中文TTS技术领域中最牛X的,比什么NeoSpecch强多了。这一次起初选择的仍是讯飞的,但感觉发音还是欠自然一些——没办法,舍得的要求太高了。于是放狗搜索,结果发现讯飞出了个语音云,InterPhonic也从5.0升级到6.0了),从它的在线演示那里一看(在线演示地址:
    http://open.voicecloud.cn/index.php/default/online_demo),我擦,同样一句话,6.0比5.0自然了不少,虽然仍有机器感,但舍得相信,再牛也就是这样了!而且,居然还有东北、湖南、四川等地的方言……咋没有咱浙江的捏?遐想一下,视频中的配音操着一口浓重的浙江方言,逼得各路童鞋不得不埋头去看字幕,那该是一件多么令人神往的事情啊!
    就是它了。舍得立即注册了语音云的账号,下载好开发用的SDK……下完之后一看文档就傻眼了,我只会Python,最多加上个Qt,TNND的SDK居然是C++?虽然之前多少有些心理准备,但短暂的茫然和失落总是难免的。

    科大讯飞的语音合成在线演示

    没办法,有困难要上,没有困难制造困难也要上啊。期间想了很多办法,找了很多资料(中间略去5000余字不表)……最后悲哀地发现,看起来,只剩下埋头苦学Visual C++开发技术一条路了。

    科大讯飞的开发手册,这语言非常陌生,舍得直接就看醉了

    微软的Visual Studio虽然也算不上陌生,大概在2009年曾经用它编译过一次SuperMemo的插件——波兰一个技术牛人开发的,我只是硬着头皮改改试试,没想到成了。可那是C#,这回是C++,俩码事好不好?
    好在天无绝人之路,讯飞的SDK(开发工具包)中有n个实例,其中有一个正好是舍得用得着的——将文本转换为语音。
    装好Visual Studio 2012之后,打开那个实例,生成一个程序,唔,还算顺利,尽管生成的语音是PCM格式,不是舍得想要的wav,还在可忍受范围之内。
    但是——这个时候往往会有个但是,问题来了,这个实例里,用来转换的文本是内嵌在程序中的……我去,难道我每转换一句话,就得重新编译一次程序?虽然勉强能用,但不能这么坑爹啊?
    有没有办法加上一个最最最简单的功能,来个文本框,好让我输入文本,然后一点按钮,就把语音转出来捏?
    继续想,继续想(中间再略去3000余字),终于想起舍得多年前的独门绝学——修改大法。大意是,找一个差不多的程序,把它改一改,再和这个实例拼在一起……哼哼,我看行。
    马上放狗上网搜一堆实例下来,有书,有源代码,不到2个小时的时间里从网上拖下来3个多G的内容(那个块头最大的《VC++范例大全》,2.69G,最后没用上),凭感觉找了一个叫FileSpliter的实例,开始祭出修改大法。
    刚动手改时还找不着北,晕了一阵之后,头脑里开始有了思路。舍得先改出如何从文本框中获取文字,实例中没有讲到的语法,就直接上网搜索。这个改起来是最快的。
    然后把TTS中的代码往FileSpliter上加……经过几次尝试之后,成果开始慢慢显现。

    修改中的部分代码:舍得连参数、控件名称都没改
    最后做出下面这个叫“Dubber”的程序:

    操作起来很简单,在文本框里粘贴上中文台词,然后点击开始合成,就会自动从科大讯飞的语音云中提取TTS语音数据,生成音频文件。
    接下来,舍得还需要对这个程序进行改动,比如说,不再粘贴台词,而是先打开一个文本文件,以每一行为单位,逐句输出音频,这样才是高效率嘛!
    或许还有更高的,讯飞除了语音合成,还有语音识别,咱可以对着麦克吼出台词,然后自动生成音频文件,女声的哦……

    最后,来对比一下效果,这是用InterPhonic5.0合成的:
    http://pan.baidu.com/s/1hqHzPyc
    这是用Dubber合成的:
    http://pan.baidu.com/s/1c0Eki0C

    本文版权归舍得学苑所有,欢迎转载,转载请注明作者和出处。谢谢!     
    作者:舍得     
    首发:舍得新浪博客
                                                                                                                                                                                                    

  • TA的每日心情
    擦汗
    2017-8-22 09:17
  • 签到天数: 1360 天

    [LV.10]以坛为家III

    qfswordman 发表于 2014-12-15 21:50:24 | 显示全部楼层
    第一个VC++的程序就这么牛,厉害
    另早就应学C++了。
  • TA的每日心情
    郁闷
    2019-9-22 21:34
  • 签到天数: 168 天

    [LV.7]常住居民III

    foxwater 发表于 2014-12-16 16:06:33 | 显示全部楼层
    老大就是厉害,技术牛人
  • TA的每日心情

    2019-12-7 17:09
  • 签到天数: 219 天

    [LV.7]常住居民III

    zsgreater 发表于 2014-12-18 12:37:54 | 显示全部楼层
    so niubility{:soso_e183:}{:soso_e179:}
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    小黑屋|手机版|Archiver|官方微博|官方QQ群|舍得英语魔法学苑 ( 冀ICP备11024081号-1 )

    GMT+8, 2020-7-14 14:00 , Processed in 0.045989 second(s), 20 queries , Gzip On.

    Powered by Discuz! X3.2

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表