2025-04-30 22:31:56
很久很久之前写了一篇在 Linux 上如何把 Android 作为麦克风的教程,不久前因为要用 Windows 上的一些软件,装上了 Windows,顺便折腾个在 Windows 上的把 Android作为麦克风的方案。
找了很久,没有找到既方便又开源的方案,一些免费的方案(如 WO Mic)音质不太行,自己摸索了一方,最后用 Scrcpy 和 VB-CABLE 实现了。关键是 不需要在 Android 上安装任何软件!
使用 Scrcpy 把 Android 作为麦克风理论上在 Linux 和 macOS 上也可以,在音频驱动那里会有点不同。
确保 Android 版本 >= 11
首先是 Scrcpy,它将用于从 Android 转发音频,可以在 Github Release 页面 下载对应的压缩包再解压,32 位下载 scrcpy-win32-vX.X.zip
,64 位下载 scrcpy-win64-vX.X.zip
。
最好的办法是直接通过 Windows 的包管理器 winget 安装:
|
|
VB-CABLE 的用途是将音频由输出转到输入。
前往 VB-CABLE官网,点击 VBCABLE_Driver_Pack45.zip
下载压缩包,解压后,双击执行 VBCABLE_Setup_x64.exe
(64 位)或 VBCABLE_Setup.exe
(32 位)安装。然后就好了很么都不用动。系统 > 声音 > 输入 应该会自己变成 CABLE Output。
具体步骤见 Android Developer 文档。
如果通过压缩包获取 Scrcpy 点击解压后目录里的 open_a_terminal_here.bat
在该目录下打开终端。通过 winget 安装 Scrcpy 直接打开终端即可。
接着运行:
|
|
第一次运行 Android 上会要求授权,授权即可。
参数解释:
--no-video
不要画面--no-control
不要控制--audio-source=mic-unprocessed
将声音源指定为未处理的麦克风音频声音源还有很多选项,完整选项见 Audio 文档,我觉得 mic-unprocessed
音质是最好的,也可以试试别的,简单列举几个:
mic
: 捕获麦克风mic-unprocessed
: 捕获未处理(原始)的麦克风声音mic-camcorder
: 捕获为录制视频调优的麦克风声音,如果可用,其方向与摄像头相同mic-voice-recognition
: 捕获为语音识别调优的麦克风声音mic-voice-communication
: 捕获为语音通信调优的麦克风声音(例如,如果可用,它会利用回声消除或自动增益控制)在 系统 > 声音 > 音量合成器 > 应用 将 Scrcpy 创建的窗口的 输出设备 更改为 CABLE Input,现在通过 Android 麦克风输入的音频就不会从扬声器里输出了,会从输入设备 CABLE Output 里输出。
2025-02-16 11:08:28
Imagen 3 是 Google DeepMind 最新的文生图模型,可以在 ImageFx 免费使用。Imagen 3 在 Gemini 内也是可以使用的,Gemini 生成图片有时会不听话,不生成图片,所以本文采用 ImageFx。
主要有两种方式:
第一种方式 Imagen 3 不支持,本文就采用第二种。
想要有一个对人物描述相当详细的 Prompt,由人来写就太繁琐了,可以提供一些人物的特征让大语言模型帮我们写,这里采用 Gemini 2.0 Flash Thinking 模型。给出的特征越详细越能生成符合自己想要的人物。
示范 Prompt:
|
|
注:不要想着生成loli什么的,生成图片时会被判定为“儿童”而无法生成!
先用大语言模型写的 Prompt 生成一下,如果效果不错,把种子锁定下,最好把种子保存下,方便以后生成尽可能相似的人物。
下载一张图片,发给支持图像的大语言模型,并让它根据图像创造出详细的 Prompt。
示范 Prompt:
|
|
首先先生成一个生成人物坐在桌前写作业的图片的Prompt。
示范 Prompt:
|
|
我们将使用 [CHARACTER]
代指人物,然后把上一个步骤生成的 Prompt 拼接进去,如:
|
|
最终效果图:
2025-01-01 10:07:26
(封面来自 Unsplash,作者 BoliviaInteligente)
2024年结束了,2025年来了,转眼又是一年了。2024给我最大的震撼就是AI的辅助带来的便捷,过去稍有接触AI,但是没有太深入地使用,导致也用不好。
看到 X 上有很多大佬用 Cursor 开发出了一些项目,就有点手痒痒了。过去我使用的编辑器是 Helix,一个全键盘编辑器,感觉效率会高一些。如果要用 Cursor 这样的 AI 编辑器就要脱离全键盘的操作了,但是 AI 能提高我的开发效率的话,没有了全键盘操作也不算亏。于是 Cursor 就取代 Helix 在我的电脑上的地位。
Cursor 让我震撼的是,在编辑一块代码的时候,居然可以按 Tab 键去补全其他部分相关的代码,以前我以为 AI 代码补全就只能像补全变量名、函数名那样补全,这完全打破了我的认知啊!
最早使用 AI 我都倾向于想用一句话让 AI 完成我想要做的有点复杂的事,但在理论上是不可行的,事实上也是不行的。只用一句话去表述一件较为复杂的事,信息量很少,难以去描述细节,AI 自然无法做到和自己所想的相符。和人说件事,说话只说一句,得让对方多疯狂,更别说是 AI 了。在我的使用体验来说,AI 更适合去做小任务,而非是复杂的大任务,如果要让 AI 去做大任务,将它分解为多个小任务效果会更好。
AI 的使用体验总结起来就是一个字——“爽”,每周最多一天的时间里我可以开发得更高效。
2024年新开发的项目主要实在暑假里开发的,好几个我都觉得不太行,所以只挑出我最经常维护的词悦来说吧。
词悦是一个开源的支持 mdict 格式的词典,是我觉得 Android 上没有简洁、好用的开源的 mdict 词典而开发的。虽然最初发布的时候很简陋,不过现在经过几个月的开发,已经完善了许多了。
最初词悦用 git-cliff 生成版本发布时的更新日志,后来我才慢慢在词悦中把 Github 的 label、milestones 功能好好用上,现在词悦的版本更新日志是由 Github 生成的,这样可以把这个版本贡献者直接显示在更新日志中。
词悦还提交到了 F-Droid 上,我还提交过几个 MR,但是水平不太够,没办法,犯了很多低级错误,都由 linsui 大佬纠正了,感谢 linsui 大佬不知疲倦地修改我的 MR!
在开源中,我学会了许多以前不知道的技巧、技术,开源不仅利他,还能利己。
2024,我重启了我的博客,一年的文章就是2023的十几倍了(2023只有一篇文章)。2024我写了15篇博文,其中大部分都是在暑假写的。暑假闲来无事重启了博客,还把博客主题换成了 Stack。我还把博客提交到 V2EX VXNA、博友圈等平台上,我的博客也终于不再是我自娱自乐的地方了。
希望我可以在2025把 AI 使用得更加得心应手吧;希望我能在2025凭借自己的能力去赚到人生第一桶金,哪怕没几块也行哪。
2024-11-30 23:16:10
最近在开发词悦(一个 mdict 词典)的时候,需要支持全局上下文菜单,查了很多资料都没有找到合适的方法,问了下 cursor,得到了初步方案,经过稍微的改动就有了这篇教程。
本文开发环境在 Linux 下。
|
|
编辑 android/app/src/main/AndroidManifest.xml
:
|
|
创建 android/app/src/main/kotlin/com/example/example/ProcessTextActivity.kt
:
|
|
编辑 android/app/src/main/kotlin/com/example/example/MainActivity.kt
:
|
|
编辑 lib/main.dart
:
|
|
接下来怎么样就靠你的想象力了 :)
2024-09-30 20:31:22
当我们像在仅需要在局域网内进行直播这种情况时,就可以自己动手搭建极简的直播服务。
会写一点点 nginx 配置。
用于流媒体传输的协议,最初用于 Flash 播放器,也可以用于直播。
本教程中,我们将用该协议将直播流推送至 nginx 服务器。
基于 HTTP 流媒体传输协议,它将流分割成多个文件传输,对于直播流,以 m3u8 文件为播放列表,以 ts 文件为视频。
本教程中,该协议用于向浏览器传输直播流。
nginx 本身并不支持 RTMP 协议,需要把 nginx-rtmp-module 模块编译进 nginx。
从 nginx.org 下载 nginx 源码,解压后进入目录。
然后克隆 nginx-rtmp-module 源码:
|
|
编译并安装 nginx:
|
|
最后 /usr/local/nginx/sbin
添加到环境变量 PATH
中。
一般浏览器不能直接播放 HLS,这里采用 DPlayer + hls.js 用于播放 (因为好看)。
从 这里 还有 这里 下载 DPlayer.min.js
和 hls.min.js
到 /usr/local/nginx/html/
。
将 /usr/local/nginx/html/index.html
改为:
|
|
打开首页就是播放器。
将 /usr/local/nginx/html/conf/nginx.conf
改为:
|
|
关于 nginx-rtmp-module 更多配置见 wiki。
不用担心 HLS 的 ts 文件会无限增加下去,nginx-rtmp-module 会删除老的 ts 文件。
启动 nginx:
|
|
这里推流使用 OBS Studio。
在“设置”-“直播”中填写“服务器”为 http://localhost:8080/live
,“推流码”填自己想要的,但 index.html
中的 example
要改成这个推流码,不然没法播放直播。
配置好来源就可以开始直播啦~
打开 http://localhost:8080
就可以看到直播了,大概会有 10s 左右的延迟。
正式使用时,请根据自己的需求更改。
过去,学校里的大型表演,能到现场看的人数有限,不是所有人都能到现场看,而且没有直播。再过不久有一个歌唱比赛(我当然去参加海选了,只不过没选上),我想搭建一个直播服务去直播这些表演,于是就有了这篇教程。因为能否直播还要征得校方同意,所以不一定能用得上…
2024-08-15 15:25:12
Material You 加入到 Android 12 中,其中包括了动态配色。
用户可以直接在系统层面上很方便地改变系统配色和支持动态配色的软件的配色。开发者也不需要再开发配色功能。
(因为不同厂商把选项名改得不一样,所以很难明确写出选项的名称)
可以单独选择配色,也可以从壁纸上提取出颜色。
用了 Android 13 一整年了,都不知道有这个功能 😂 最近用 Flutter 开发词典的时候才了解到。