今天跟大家唠唠嗑,关于我用代码“唱”周杰伦的《黑色幽默》这件事儿。
起初就是心血来潮,突然想用代码搞点不一样的东西。平常听歌嘛最喜欢周董,尤其是这首《黑色幽默》,歌词简直绝了,句句扎心。
第一步:啃歌词!
- 我先把《黑色幽默》的歌词扒下来,一句一句地扣。
- “难过是因为闷了很久,是因为想了太多”,这得好好想想怎么用代码表达出来。
- “说散你想很久了,我的认真败给黑色幽默”,这句简直是灵魂!
第二步:琢磨怎么让代码“说话”
光有歌词还不行,得让程序把歌词念出来!这可把我难住了,各种查资料,试方法:
- 一开始想用现成的语音合成库,结果发现效果都太生硬了,没感情,pass!
- 后来想到是不是可以用一些文本处理的技巧,比如给每句歌词加点停顿,或者调整语速啥的?
- 就这么一点一点的尝试,改代码,跑程序,听效果,简直折磨人。
第三步:土法炼钢,手动调整
那些自动化的方法效果都不逼得我只能用最笨的办法:
- 一句一句地调!
- 每句歌词停顿多久,用什么语气“念”,全都手动设置。
- 简直就是个体力活,眼睛都快看瞎了。
第四步:加入一点“感情”
光是念歌词太干巴巴了,我琢磨着能不能加点音效,烘托一下气氛?
- 找了些钢琴的伴奏,跟歌词对上。
- 在一些关键的歌词,比如“不想太多,我想一定是我,听错弄错搞错”那里,加点回声效果,营造一种无奈的感觉。
- 还在“我的认真败给黑色幽默”这句,加了个心碎的声音,哈哈,有点恶搞,但是效果还不错。
效果展示
折腾了好几天,总算是弄出来了。虽然效果还是有点机械,但是总算能听出点《黑色幽默》的味道了。 感觉这回实践还是蛮有意思的,让我体会到用代码表达情感的乐趣。
这回尝试也让我对语音合成和文本处理有了更深入的了解,以后有机会再搞点更有意思的东西!