AI个人学习
和实操指南

微信语音消息还能这样玩?小白也能用 Devbox 轻松实现公众号语音转文字!

很多人会想直接使用微信的语音输入,说的总比打字快。

与常见的 .mp3.wav 格式不同,微信语音输入默认使用的是 .amr 格式。


下图为开发者服务器接收到来自微信的 webhook,表示公众号上有用户传来语音消息,你能看到格式即为 .amr

微信语音消息还能这样玩?小白也能用 Devbox 轻松实现公众号语音转文字!-1

许多 STT (Speech to Text) 服务只支持前者,这就衍生一个需求:我们如何将 .amr 格式的语音转换为 .mp3 格式?

 

解决方案

起初,我想用 Laf 解决,后来发现 Laf 定位于 函数即服务 的解决方案,不支持用文件系统比如 fs 操作服务器上的文件。

后来在 GitHub 上看到一个解决思路[2]:启动一个 express 服务,使用 fluent-ffmpeg.amr 转换为 .mp3,再临时将文件存于服务器上供调用方使用。

这个方案的前提是,服务器上已经事先安装了 FFmpeg,否则 fluent-ffmpeg 将无法使用。

“这可不是一个简单的函数即服务”我当时心想。我自己是一个后端和运维小白,以前都是 Serverless 一把梭,专注于前端跟用户的交互。现在这可有点难到我了。

不过,我想起了 Sealos 前阵子上线的 Devbox,宣传里似乎就是要弥补 Laf 这样函数即服务的不足。

“我是不是可以在 Devbox 上部署如上我所说的服务呢?”于是改造(踩坑)就开始了。

 

Devbox 使用体感

Devbox 是什么可以看一下介绍:Sealos Devbox 发布:部署云端原生开发环境

微信语音消息还能这样玩?小白也能用 Devbox 轻松实现公众号语音转文字!-1

我这里想特别说它的开发体验。

 

因为这非常影响你对 Devbox 的理解,也是我走过的弯路,所以这一段使用心得或者说结论,我放到这里论述。

Devbox 上,一切开发过程都是直连到服务器上的

我一开始非常不习惯,然而它的原理就是我们本地 IDE 上的 Connect to SSH Host 功能,我们来看一下 Claude 对此的说明:

微信语音消息还能这样玩?小白也能用 Devbox 轻松实现公众号语音转文字!-1

 

Devbox 让你免去 记录服务器 IP 或域名 / 输入 SSH 端口号 / 输入服务器用户名或密码(或SSH密钥) 的过程,只需要下方一键按下去即可。

微信语音消息还能这样玩?小白也能用 Devbox 轻松实现公众号语音转文字!-1

 

我用的是 Windsurf ,一键按下去后,我的 Windsurf 就试图去连接到远程服务器上了。这之后你在 IDE 上的修改,实际上都是在操作远端服务器。

包括,运行 pnpm i 或者其他命令,全是如此。

更为重要的是,你所有的操作,包括命令的运行,最后在 Devbox Web UI 上点击 发布版本 时,全部(再讲一次,包括命令的运行)会被打包成一个 docker 镜像,相当于对当前虚拟机的状态进行一个快照。

微信语音消息还能这样玩?小白也能用 Devbox 轻松实现公众号语音转文字!-1

所以我们在 Devbox 开发环境上安装的所有依赖和底层软件(比如FFmpeg),在 发布版本 之后,我们在生产环境上完全无需重走一遍,而是开箱即用,所有的前置需要全都被安装好了。

当你理解这一点之后,你才终于理解为什么 Devbox 宣传时一直说:终于不用担心生产环境时的依赖问题和版本号冲突问题了,因为生产环境完全就是开发环境的镜像!

 

动手实现

有了以上对 Devbox 的认知后,动手实现的部分就相对简单了。

 

1. 在 Devbox 上选择 express

微信语音消息还能这样玩?小白也能用 Devbox 轻松实现公众号语音转文字!-1

 

2. 用 IDE 打开

如上提到的,用 VS Code / Cursor / Windsurf 连接到服务器上进行开发。

连接上服务器后,全选所有文件 Cmd + A,将默认模板文件全部删除。

 

3. 下载代码

我们刚刚选择了 express 的模板,所以默认 git, nodepnpm 全部安装好了。

现在我们打开 Terminal 终端,用 git 下载代码:

git clone https://github.com/yenche123/liubai.git

这里分享一个心得,你在 SSH Host 的 IDE 上输入命令,感觉会有那么一点卡卡的 delay 感,那是因为你真的在操作远程服务器上的终端,你们之间当然会有一个延时了。

以前的开发体验是,你在本地开发完毕后,再将代码打包,然后上传到服务器上;使用 Devbox 则是一切都在服务器上操作,开发即部署。

 

4. 安装 FFmpeg

继续在 Terminal 上输入以下命令,完成 FFmpeg 的安装:

sudo apt update && sudo apt upgrade # press Y to continue
sudo apt install ffmpeg # press Y to continue
ffmpeg -version # verify if installed successfully

最后一行可以校验是否安装成功。

再说一次,这次安装完成以后,在生产环境上是无需重走一遍的,因为镜像里将会直接包含了这个软件。非常神奇吧!

 

5. 编写 entrypoint.sh

微信语音消息还能这样玩?小白也能用 Devbox 轻松实现公众号语音转文字!-1

我们在根目录上,也就是跟 liubai/ 同级的位置(如上图所示),创建一个 entrypoint.sh 文件,内容如下:

#!/bin/bash
cd /home/Devbox/project/liubai/liubai-backends/liubai-ffmpeg
pnpm dev

这个文件是告知生产环境的服务器,机器启动之后,如何启动我们渴望的服务。

我们这里就是告知机器,先定位到目标文件夹 liubai-ffmpeg 然后再运行 pnpm dev 命令,去启动 express 服务。

 

6. 授权 entrypoint.sh

同样在根目录,我们运行以下命令,为 entrypoint.sh 添加可执行的权限:

chmod +x entrypoint.sh

 

7. 安装依赖

我们打开 liubai-ffmpeg 目录,来安装所需依赖:

cd /home/Devbox/project/liubai/liubai-backends/liubai-ffmpeg
pnpm i

 

8. 在开发环境上启动服务

回到根目录上,我们来模拟一遍服务的启动:

cd /home/Devbox/project
bash entrypoint.sh

 

微信语音消息还能这样玩?小白也能用 Devbox 轻松实现公众号语音转文字!-1

看到如上图所示的打印消息,就说明我们已在开发环境的机器上启动了 amrmp3 的服务!

 

我们回到 Devbox web ui 上,复制一下公网地址:

微信语音消息还能这样玩?小白也能用 Devbox 轻松实现公众号语音转文字!-1

 

然后在浏览器地址栏拼接 /hello,如果能看到如下图所示的画面,就说明给我们的服务已经成功启动了。

微信语音消息还能这样玩?小白也能用 Devbox 轻松实现公众号语音转文字!-1

现在改拼接 /new?url=你的amr文件&id=当前时间戳(毫秒)

你就获得了一个 amr 转换为 mp3 的服务啦!

 

9. 部署到生产环境

我们在 Devbox web ui 上点击 发布版本

微信语音消息还能这样玩?小白也能用 Devbox 轻松实现公众号语音转文字!-1

发版过程中,你的 IDE 会短暂断开连接,这是正常的。

发版后,我们点击 上线,按照最低配置点击完成即可。

等待几分钟后,你就拥有另一个公网可访问链接,这就是生产环境的 amr 转换为 mp3 服务啦!

 

在 Devbox 上 git commit

在 Devbox 上,我们可能会想开发完后提交 git commit,这个时候需要远程服务器拥有远程仓库的推送权限。

下面以 GitHub 为例,分享一下我遇到的情况。

在 Terminal 上运行 git push origin 你的分支名 时,Terminal 会在浏览器上打开一个 GitHub 页面,要求你输入 IDE 上的授权码,如下二图所示。

微信语音消息还能这样玩?小白也能用 Devbox 轻松实现公众号语音转文字!-1

 

微信语音消息还能这样玩?小白也能用 Devbox 轻松实现公众号语音转文字!-1

 

但这个操作可能会授权失败,这个时候在 IDE 右下角会弹出通知,让你用 Personal access tokens 进行授权,如下图所示:

微信语音消息还能这样玩?小白也能用 Devbox 轻松实现公众号语音转文字!-1

 

授权完毕之后,再 git push 一下,应该就没问题了。

 

立即体验

上面提到的服务已经部署在“留白记事”上了,现在关注“留白记事”微信公众号,发送语音给它,就会调用上方提到的 amrmp3 服务。

目前大模型厂商 7 小虎中,MiniMax 是允许开发者在 messages 中直接传入 mp3 格式的 base64。看到这里,你还不快去试试,原生地在微信中使用多模态!

 

综合上文,我们使用了 Devbox 完成了一个 amrmp3 的服务。

本文的核心在于 Devbox 使用体感 那一节,我们简单介绍了 Devbox 与传统开发的区别,由于 Connect to SSH Host 的能力,我们直接操作了远程服务器,在其上完成了软件的安装和核心代码的开发。

借由 Devbox 对底层容器的优化,它让我们拥有开发即部署的能力,开发完直接在开发服务器上验证结果;同时 Devbox 能对整个虚拟器进行快照,解决了 开发环境生产环境 的一致性难题,让我们在生产环境上无需重走一遍安装依赖以及底层软件的流程,达到生产环境开箱即用的效果。

未经允许不得转载:首席AI分享圈 » 微信语音消息还能这样玩?小白也能用 Devbox 轻松实现公众号语音转文字!

首席AI分享圈

首席AI分享圈专注于人工智能学习,提供全面的AI学习内容、AI工具和实操指导。我们的目标是通过高质量的内容和实践经验分享,帮助用户掌握AI技术,一起挖掘AI的无限潜能。无论您是AI初学者还是资深专家,这里都是您获取知识、提升技能、实现创新的理想之地。

联系我们
zh_CN简体中文