有坛友问起了自建ktv的问题请教如何在家KTV? , 我自己搭了本地化的ktv平台也有好几年了,分享给一样爱折腾(挂壁)的坛友。也给自己留一份文档,方便未来复现。
本文的目标读者是完全没有编程经验,但能熟练操作windows系统的朋友。我本身代码能力很水,折腾下来也只是让软件能跑而已,流程不会太复杂。
本文介绍一个开源卡拉OK平台,可以安装在任何一台台式机、笔记本、树莓派上。安装成功之后可以达到理想的本地KTV曲库构建和点播平台。
硬件篇:低成本家庭KTV-硬件篇:0元入门,百元开心,300块获得无限可能,六套方案自选
有多折腾?
我自己换了台电脑从头跑了一遍,连debug带写流程大概要3个小时。不过其实流程并不复杂,属于我奶奶都能做到的构建。
有多便宜?
为了契合本区的宗旨,本文的ktv构建最大的特点就是:便宜!只要有电脑,有一副耳麦,有网,就可以达成在电脑上随时k歌。后续还会写一些跟家庭影院系统适配,打造真正的全功能家庭ktv。本文完全采用开源内容,电脑和硬件算沉没成本的话,整套系统花费为0元。
为啥不直接用app?
如果需要简单方便,最直接的就是下载一些国内的卡拉OK的app。全民k歌之类的功能丰富全面,硬件要求也不高。但是国内的k歌软件有一些问题:
- 区域屏蔽。“您所在的地区无法播放”实在让人窝心。当然vpn可破,但是vpn稳定性和额外花销也是要考虑的。
- 缺少MV。绝大多数app是不提供视频文件播放的。无论是因为服务本身的限制,还是版权要求,现成的app大部分都只有音乐文件本身。而KTV一大特点就是边看边唱,人多的时候没有视频别人只能盯着唱歌的人,尴尬度满分。少了视频就没了一多半的兴致。当然由于区域限制,我也没有详尽的调查每一款app,也许有app能支持音视频同步,欢迎坛友补充。
- 没有meme曲。比如前年很有趣的【
《综合棋牌第一名》
】 ☀️《综合棋牌第一名》☀️_哔哩哔哩_bilibili , 以及去年很火的【
在 5:20 睡 觉 13:14 准 时 起 !!
】 ⚡ 在 5:20 睡 觉 13:14 准 时 起 !!⚡_哔哩哔哩_bilibili ,大部分app是做不到及时更新曲库的。
- 缺少儿童曲库。虽然我知道大家都恶心cocomelon,babyshark,pinkfong,hogi,etc.,但家里有娃的时候总要给娃一点成长机会。国内的app这块几乎是空白。有老外朋友来玩的话,很多外语歌曲也并不提供,毕竟版权嘛。有一些孩子看了电影很喜欢的歌,国内app更新也是来不及的。比如汪汪队电影里的插曲 https://youtu.be/Vb18o596bwM?si=x--Cgky7DrAGmpG9 。
如果你也有以上的困扰,那么恭喜你,本文的软件可以解决上面的所有问题。
怎么解决上述问题?
也没有什么了不起的魔法。就是寻找合适的开源平台而已。GitHub 上搜karaoke会出现6.5k个仓库。几年前我仔细筛选了一下,选择了GitHub - xuancong84/pikaraoke: The World's best open-source Home Karaoke system (support searching/downloading from Youtube and DNN-AI-based vocal/nonvocal sound separation), multilingual and cross-platform
现在作者已经声明不会继续更新了,转移去了GitHub - xuancong84/OpenHomeKaraoke: Open-source Home Karaoke , 但我其实更喜欢之前的老版本,因为新版本提供的哼歌搜索功能华而不实,还依赖于云服务。老版本可以做到如下几点:
- 可以从youtube和b站下载视频。
- 本地化的神经网络自动消人声。
- 浏览器为基础的便捷控制平台。
- 多语言支持。
当然,这个版本还缺少了一些关于本地曲库管理的优化。我从pt上下载了30tb接近20万首歌曲的mkv文件(如果需要pt邀请请私聊),这个作者的版本会有一些优化和搜索的问题。另外也没有点歌历史记录,每次都要搜歌是挺麻烦的。所以我自己fork了之后在本地做了一些优化,也放出链接:GitHub - regaliaf/pikaraoke at release-1.0
不过我自己的代码水平有限,写的代码完全是能用就行,没考虑过迁移。而且对前端完全不懂,就是凑合着用把功能先上线。如果用我这个版本出现问题,欢迎回帖,我会尽可能的debug。大佬其实选择上面其它的仓库也没问题,各有特色,看自己喜好。
最终实现视频
原作者有录制上传youtube的使用视频https://www.youtube.com/watch?v=kmQax0EhAxE ,在决定采用本平台之前可以参考一下。他主要展示了从流媒体上下载歌曲和AI消人声的功能。
大佬其实看到这就可以了,因为git仓库里的readme文件很清楚的解释了安装的步骤。以下部分则是手把手的安装指导。只为windows平台做指导,毕竟如果大佬已经用非win平台了,那大概率也不需要我啰嗦。
奶奶问:孙儿啊,你这玩意咋装呀?
具体流程
- 安装各种依赖:
-
git:去Git - Downloading Package 下载windows版本,按照系统版本选择32位或者64位。如果是比较新的机器,大部分人应该下载standalone installer的64位版本了。如果不知道自己的系统版本,可以在桌面上右键,选择“个性化”快速进入系统菜单,然后左侧点击“系统”标签,查看右侧的系统类型。
-
Python:去python官网Download Python | Python.org 直接下载最新版本就行。
-
VLC:去官网https://www.videolan.org/ 直接下载。记住一路默认安装,否则会出错。
-
ffmpeg:下载地址Download FFmpeg ,随便搜了一个教程Windows 10安装FFmpeg详细教程_ffmpeg windows-CSDN博客 。
-
voicemeeter: 本地混音器。用于测试。如果准备外接到电视,那不需要这个。VB-Audio VoiceMeeter Banana 官网下载。http://vb-audio.cn/post/36.html 官网教程。
-
到这里最好重启一下。
-
- 克隆仓库到本地。
- 进入GitHub - regaliaf/pikaraoke at release-1.0 ,复制链接
- 在资源管理器里创建一个空目录
- 在这个空目录里点右键,选择“在终端中打开”。或者用win+R启动cmd,用命令行进入目标目录。
- 运行命令
git clone https://github.com/regaliaf/pikaraoke.git
cd .\pikaraoke\
git checkout release-1.0
请记住这个当前目录,比如e:\ktv\pikaraoke\,这就是你的默认目录。下文的默认目录都是指这个目录。
-
安装依赖
- 在默认目录执行命令
python -m venv .venv
- 之后在默认目录运行
.\.venv\Scripts\activate
- 运行
pip install --upgrade pip
, 这时候会提示你Error,只要复制它告诉你的命令再运行就好。 - 运行
pip install -r requirements.txt
- 如果有英伟达的显卡,运行nvidia-smi找到系统的cuda版本
,然后去https://pytorch.org/ 选择你的系统里的cuda版本,获取安装命令。比如我这里的就是pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu126
- 复制安装命令到刚才的命令行窗口来安装带cuda支持的pytorch
- 在默认目录执行命令
-
准备文件目录
- 找一个地方创建一个空文件夹,比如叫songs。这个安装目录要记住,等会运行的时候需要。比如叫d:\ktv\songs。
- 在songs里创建两个空文件夹,分别叫vocal和nonvocal
- 如果有本地曲库mkv文件,找到目录,比如叫d:\local_mkv\songs
- 如果不创建文件夹也可以,所有的歌曲会存在你的个人文件夹的
pikaraoke_songs
文件夹下。
-
运行程序
* 确认自己在默认目录的venv环境下,否则激活venv
-
先测试
python .\app.py
是否能正常运行。
-
如果之前指定了下载歌曲的存放目录,以及另外有本地曲库的目录,在pikaraoke的默认目录的命令行里运行
python .\app.py -d "d:\ktv\songs" -S "d:\local_mkv\songs"
, 注意大小写。第一个引号里是你在第四步创建的目录,第二个引号里是你的本地曲库的目录。可以看下图,我加载了接近20万首mkv格式的歌曲。
-
-
打开点歌窗口
-
无论是手机平板还是本地电脑,只要在同一个wifi里,就可以扫码打开,或者直接输入地址打开。
-
打开之后,可以点右上角的设置按钮,看看自己的配置是否正确
-
之后可以去点歌页面,随便搜一首歌来点。
-
如果是youtube或者b站下载的歌,在下载后会需要一定时间才能消除人声,别着急切换到配音。根据gpu的不同,大概要5秒-2分钟不等。我测试的1070是要1分钟左右。
-
-
本地测试
- 打开voicemeeter
- Hardware input 1设置成你想要的麦克风
- 记得把声音的默认输出配置为VoiceMeeter Input
- 点歌唱歌。需要注意,一般电脑麦克风都没有滤波功能,所以如果是外放音箱会有不小的回声。建议带耳机测试。
- 如果还搞不明白怎么配置,可以看看这个视频https://www.youtube.com/watch?v=m6rp9lkiFBU
- 本步骤不是必须的。因为如果要投射到电视上,会有硬件调音台来处理。
-
大概页面介绍:
-
主页是当前点歌的设置,可以用来切换是否消掉原声(如果刚添加的歌曲,请不要太快切换到伴奏版本,因为后台可能还没跑完,会报错)。如果是流媒体下载的版本,用“伴奏、混合、嗓音”来切换,如果是本地mkv文件,用track 1 track 2 来切换
-
点歌列表是已点歌曲,可以直接拖动歌曲名字前面的箭头改变排序。
-
搜索页面可以模糊搜索。点击高级选项可以直接复制目标链接。虽然写的只支持youtube,但其实也支持b站。注意复制的时候b站会给你一大堆无效字符串,只留下url才行。
-
浏览所有歌曲能通过搜索框来搜歌。比如搜周杰伦。目前只有文件名匹配。
-
最后是播放统计,可以方便快捷的选已经选过的歌。还可以看谁喜好啥口味。
-
待续
这样,软件部分就配置完成了。现在你有了一个完全本地管理的曲库和播放系统。接下来就是硬件的部分。硬件比较麻烦,因为每个人的环境都不太一样,我只能按照自己的经验介绍一下我的方法,不一定适合每个人。放到part 2来说好了。