随手记:目录写着能出声,我那一次没听到

从笔记里那行字说起

整理手边的笔记,翻到刚记下的那一行:目录写着输出 Text + Audio,可我那一次没听到声音。当时只顾着把错误原文抄下来,前后经过没写清楚,现在补一篇。

事情起点是一段录音。不是真实通话,是我用语音合成现做的一段,里面故意埋了几个专有名词,正确答案我自己清楚:「请把珞珈三号卫星的遥测数据同步到百炼控制台,负责人是岑巩县项目组的冉雍。」我想把它转成文字留档,顺手看看能不能省掉人工核对那一步。

我找了两个读者各读一遍,一个是百炼九月新上的全模态模型 qwen3.8-omni-flash,一个是专业语音转写 fun-asr。

封面:它听对了专名,却拒绝开口

第一个读者直接吃本地 mp3

bl omni --model qwen3.8-omni-flash --audio ./a1.mp3 --message "这段音频在说什么?先逐字转写,再用一句话概括。" --text-only

一次调用,逐字转写里珞珈三号、岑巩县、冉雍、百炼控制台四个专名全对,后面那句概括也和原意相符。本地 mp3 直接读,不用先换成公网 URL,这点比我预期省事,我原来以为得先找个地方把音频挂上去。

qwen3.8-omni-flash 是九月上架的那批,上架页写的是 09-17,实时变体 09-21。目录里它的输入模态是 Text + Image + Video + Audio,输出是 Text + Audio。

第二个读者把产品名写错了一个字

bl speech recognize --url ./a1.mp3 --model fun-asr --language zh

专名也对,只有产品名从「百炼控制台」变成了「百链控制台」。

同一段录音,两边各 1 次。我不从这一次里下谁更强的结论,转写有随机性,omni 也不是专门纠专名的东西。但这件事之后我给自己立了条规矩:要留档的录音别只信一个读者,同素材双读一遍,一字差当场就摆在眼前,比事后翻文稿回炉便宜得多。

同一段录音的两种读法

想让它开口,撞上第一个 400

文字都出来了,我顺手想让它回一句语音,默认音色 Tina,回复存 wav,一次请求:

bl omni --model qwen3.8-omni-flash --message "用一句话回复:你准备好帮忙了。" --audio-out ./r1.wav

HTTP 400,错误原文是「The current model does not support the modalities parameter containing audio.」

我盯着这句看了好一会儿。目录里输出模态写着 Text + Audio,帮助文本里也没提语音回复要挑模型。我没去猜机制,猜出来的解释一旦写进笔记,过两个月自己回头看,还会当成官方说过的话。只记现象:语音输出这条路,在 3.8-omni-flash 上我那一次没走通。

换个模型,两次都出了 wav

bl omni --model qwen3.5-omni-plus --voice Marcus --message "用一句话回复:你准备好帮忙了。" --audio-out ./r2.wav

默认 Tina 那次落了一个 2.4 秒的 wav,mono、24000Hz;换 Marcus 那次 2.32 秒,规格一样,共两次。回复文本是「我已经准备好随时为您提供帮助。」

音色像不像、好不好听我不评价。我没有听感核验的手段,能核的只有文件规格,这句写在笔记里是防止以后自己把规格当成音质。

顺手又撞一个:图像那边

想着音频本地能吃,图像应该也一样,就拿一张本地 jpg 让它读招牌,一次请求:

bl omni --model qwen3.8-omni-flash --image ./storefront.jpg --message "读一下图里招牌上的字。" --text-only

HTTP 400:「The provided URL does not appear to be valid.」帮助文本对 --image 写的是 Image URL or local file。同一条命令里,--audio 收本地 mp3 刚才还好好的,--image 收本地 jpg 那一次就 400。同样只记现象:这一轮里图像得先有 URL。

音色清单,和这轮没测的部分

bl omni --list-voices 我跑了一次,15 条输出音色,默认 Tina:Tina 甜妹、Dylan 北京-晓东、Kiki 粤语-阿清、Li 南京-老李、Sunny 四川-晴儿、Marcus 陕西-秦川、Eric 四川-程川、Rocky 粤语-阿强,还有几条我没抄全。方言系音色留着做本地化内容挺合适,我之前一直以为这类清单里只有普通话。

没测的也记一笔,省得下次自己误会。视频输入 --video 这轮没素材,不写结论。帮助文本里没有 seed 这类复现开关,复现性口径照 help 逐字。3.8 的 realtime 变体走 WebSocket/WebRTC 接入,不在这一轮里。

笔记里我多加了一栏:跑了几次

这轮之后我记读数的格式变了。以前写"语音输出可用",现在后面必须跟一个次数。两次和一次不是一回事,一次只能说明这条路那天通着,说明不了它明天还通。

麻烦是有一点,多写几个字而已,好处是过一阵回头看,我能分清楚哪些结论是核过的,哪些只是那天运气好。目录里那句 Text + Audio 就是个现成的例子:我照着它排了流程,那一次没走通,笔记里要同时留下这两行,缺一条以后就会误判。

我的痛点,和它能帮我解决什么

把这一轮的账对一下。

痛点三条。第一,音视频理解以前得拼三个服务,转写、大模型、语音合成,各注册各管额度,中间的文件自己搬。第二,新模型目录写的模态不敢全信,语音输出和本地图像各撞了一次 400,撞完才知道要改流程。第三,做演示想要一句会说话的回答,音色得挑,挑不到合适的就只能退回旁白。

对上的解法也是三条。音频进、文本出、语音回从同一个入口走完,不用拼三服务,少两个平台要登,少两份额度要记。这一轮把哪条模态在哪个模型上真通列成了清单,3.5-plus 语音通、3.8-flash 语音与本地图像各 400 一次,下次照着走不用重撞。15 条音色带方言系,配音有的挑。

边界一句:单次读数只说明路通或路堵,不包稳定性;音色听感我不评价;视频输入这轮没测。

坑清单,四条带走

  1. 语音回复先挑模型:3.5-omni-plus 通,3.8-omni-flash 我那一次 400(目录输出模态写着 Audio)。
  2. --image 收本地路径我那一次 400(help 写收本地文件),--audio 本地路径正常,图像先备好 URL。
  3. 要留档的录音别只信一个读者:omni 加专业转写同素材双读各 1 次,「百链」这种一字差就露出来了。
  4. 复现性没有 seed 开关,口径照 help 逐字;要稳定性结论自己多跑几轮。

想跟着走一遍的话,装 CLI 是一条命令的事(CLI 安装说明在这),跑之前签一个 API Key 就够了。模型目录自己去阿里云百炼首页核,别只抄别人笔记里的结论。跑完欢迎回来报你那一次的 400,我挺好奇你们撞的是哪条。

posted @ 2026-10-15 18:33  新的白白酱  阅读(13)  评论(0)    收藏  举报