低成本家庭KTV-软件篇:自建曲库,u2b与b站下载,AI消人声,完全本地控制,多平台

有坛友问起了自建ktv的问题请教如何在家KTV? , 我自己搭了本地化的ktv平台也有好几年了,分享给一样爱折腾(挂壁)的坛友。也给自己留一份文档,方便未来复现。
本文的目标读者是完全没有编程经验,但能熟练操作windows系统的朋友。我本身代码能力很水,折腾下来也只是让软件能跑而已,流程不会太复杂。
本文介绍一个开源卡拉OK平台,可以安装在任何一台台式机、笔记本、树莓派上。安装成功之后可以达到理想的本地KTV曲库构建和点播平台。
硬件篇:低成本家庭KTV-硬件篇:0元入门,百元开心,300块获得无限可能,六套方案自选

有多折腾?

我自己换了台电脑从头跑了一遍,连debug带写流程大概要3个小时。不过其实流程并不复杂,属于我奶奶都能做到的构建。

有多便宜?

为了契合本区的宗旨,本文的ktv构建最大的特点就是:便宜!只要有电脑,有一副耳麦,有网,就可以达成在电脑上随时k歌。后续还会写一些跟家庭影院系统适配,打造真正的全功能家庭ktv。本文完全采用开源内容,电脑和硬件算沉没成本的话,整套系统花费为0元。

为啥不直接用app?

如果需要简单方便,最直接的就是下载一些国内的卡拉OK的app。全民k歌之类的功能丰富全面,硬件要求也不高。但是国内的k歌软件有一些问题:

  1. 区域屏蔽。“您所在的地区无法播放”实在让人窝心。当然vpn可破,但是vpn稳定性和额外花销也是要考虑的。
  2. 缺少MV。绝大多数app是不提供视频文件播放的。无论是因为服务本身的限制,还是版权要求,现成的app大部分都只有音乐文件本身。而KTV一大特点就是边看边唱,人多的时候没有视频别人只能盯着唱歌的人,尴尬度满分。少了视频就没了一多半的兴致。当然由于区域限制,我也没有详尽的调查每一款app,也许有app能支持音视频同步,欢迎坛友补充。
  3. 没有meme曲。比如前年很有趣的【:sunny:《综合棋牌第一名》:sunny:☀️《综合棋牌第一名》☀️_哔哩哔哩_bilibili , 以及去年很火的【:zap: 在 5:20 睡 觉 13:14 准 时 起 !!:zap:⚡ 在 5:20 睡 觉 13:14 准 时 起 !!⚡_哔哩哔哩_bilibili ,大部分app是做不到及时更新曲库的。
  4. 缺少儿童曲库。虽然我知道大家都恶心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 , 但我其实更喜欢之前的老版本,因为新版本提供的哼歌搜索功能华而不实,还依赖于云服务。老版本可以做到如下几点:

  1. 可以从youtube和b站下载视频。
  2. 本地化的神经网络自动消人声。
  3. 浏览器为基础的便捷控制平台。
  4. 多语言支持。

当然,这个版本还缺少了一些关于本地曲库管理的优化。我从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平台了,那大概率也不需要我啰嗦。

奶奶问:孙儿啊,你这玩意咋装呀?

具体流程

  1. 安装各种依赖:
  2. 克隆仓库到本地。
    • 进入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\,这就是你的默认目录。下文的默认目录都是指这个目录。

  1. 安装依赖

    • 在默认目录执行命令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
  2. 准备文件目录

    • 找一个地方创建一个空文件夹,比如叫songs。这个安装目录要记住,等会运行的时候需要。比如叫d:\ktv\songs。
    • 在songs里创建两个空文件夹,分别叫vocal和nonvocal
    • 如果有本地曲库mkv文件,找到目录,比如叫d:\local_mkv\songs
    • 如果不创建文件夹也可以,所有的歌曲会存在你的个人文件夹的pikaraoke_songs文件夹下。
  3. 运行程序
    * 确认自己在默认目录的venv环境下,否则激活venv
    激活venv

    • 先测试python .\app.py 是否能正常运行。

    • 如果之前指定了下载歌曲的存放目录,以及另外有本地曲库的目录,在pikaraoke的默认目录的命令行里运行python .\app.py -d "d:\ktv\songs" -S "d:\local_mkv\songs", 注意大小写。第一个引号里是你在第四步创建的目录,第二个引号里是你的本地曲库的目录。可以看下图,我加载了接近20万首mkv格式的歌曲。

  4. 打开点歌窗口

    • 无论是手机平板还是本地电脑,只要在同一个wifi里,就可以扫码打开,或者直接输入地址打开。

    • 打开之后,可以点右上角的设置按钮,看看自己的配置是否正确

    • 之后可以去点歌页面,随便搜一首歌来点。

    • 如果是youtube或者b站下载的歌,在下载后会需要一定时间才能消除人声,别着急切换到配音。根据gpu的不同,大概要5秒-2分钟不等。我测试的1070是要1分钟左右。

  5. 本地测试

    • 打开voicemeeter
    • Hardware input 1设置成你想要的麦克风
    • 记得把声音的默认输出配置为VoiceMeeter Input
    • 点歌唱歌。需要注意,一般电脑麦克风都没有滤波功能,所以如果是外放音箱会有不小的回声。建议带耳机测试。
    • 如果还搞不明白怎么配置,可以看看这个视频https://www.youtube.com/watch?v=m6rp9lkiFBU
    • 本步骤不是必须的。因为如果要投射到电视上,会有硬件调音台来处理。
  6. 大概页面介绍:

    • 主页是当前点歌的设置,可以用来切换是否消掉原声(如果刚添加的歌曲,请不要太快切换到伴奏版本,因为后台可能还没跑完,会报错)。如果是流媒体下载的版本,用“伴奏、混合、嗓音”来切换,如果是本地mkv文件,用track 1 track 2 来切换

    • 点歌列表是已点歌曲,可以直接拖动歌曲名字前面的箭头改变排序。

    • 搜索页面可以模糊搜索。点击高级选项可以直接复制目标链接。虽然写的只支持youtube,但其实也支持b站。注意复制的时候b站会给你一大堆无效字符串,只留下url才行。

    • 浏览所有歌曲能通过搜索框来搜歌。比如搜周杰伦。目前只有文件名匹配。

    • 最后是播放统计,可以方便快捷的选已经选过的歌。还可以看谁喜好啥口味。

待续

这样,软件部分就配置完成了。现在你有了一个完全本地管理的曲库和播放系统。接下来就是硬件的部分。硬件比较麻烦,因为每个人的环境都不太一样,我只能按照自己的经验介绍一下我的方法,不一定适合每个人。放到part 2来说好了。

55 个赞

沙发 火留名 太复杂了

一人血书请楼主唱歌:microphone:

2 个赞

打这么多字你不唱一首说不过去啊楼主

4 个赞

有看过教人组KTV的,但没见过自己手搓KTV的 :joy:

虽然看起来似乎不太好用,还是要给你喊 666666

支持了。。编辑辛苦了

1 个赞

nb 但在家不还得解决话筒和扰民问题 :yaoming:

:cow: :beer:

就差feature request歌词了 :xieyan:

这个我有经验 :yaoming: 任天堂出过一个

1 个赞

这个还需搭配一篇如何给家里装修一个小型声乐室。。。
买个隔音仓会很贵,自己打隔音板需要整个房间腾出来装修,最简单的拿个大四方架子挂上厚厚的隔音毯子,但是不方便打扫而且也不方便用。

我就說能在泥潭上學到真本事

2 个赞

ktv教程不是应该唱出来的么?码字明显不够专业啊 :troll:

这要是没显卡的话会是怎么样的结果呢? :yaoming:
另外…我的电脑只有下音箱可行吗?还是说麦克风需要什么样的要求?

yt-dlp能不能下歌有点ymmv,我最近都得手动从firefox feed session cookie才行
越公用的ip越难下,比如校园网、vpn等等,短时间下太多也会风控

不过这个idea挺好的,支持。

1 个赞

装好了的电脑多少出?

厉害了,也想搞一个

1 个赞

码住了zszs

1 个赞

没显卡就用cpu模式也一样可以,就是慢点。耳麦就行,随便一个上班zoom开会用的耳麦就可以啊。

一套zoom开会用的耳机+麦克风就可以搞定了。如果你唱的好听那就不叫扰民了!

美国这边sfh一般问题不大,公寓确实不太合适。不过可以戴耳机自己唱自己听。

1 个赞

不行 这楼主没放一段自己录的K歌视频 这个小红心我给不出去
哎 等等 这鼠标怎么自己动了点下去了

太棒了,一直想以后搞一套家庭KTV,不过这个是用电脑,还是想实现到电视上