每次看到 Gemini 出新功能,我第一个念头都是"能不能接到 LINE Bot 上"。这次看到 9 月 22 日的 Gemini API 更新日志,说 Gemini 3.8 Flash TTS 和 Gemini 3.8 Flash-Lite TTS 正式 GA,官方博客也同步发了介绍,我照例列了一串 Bot 点子:用爸妈的声音讲睡前故事、把群聊变成广播剧、早晨双主播播客……
列到一半我发现,真正打动我的不是 Bot,而是"逐句导演语气"这件事特别适合教发音。于是题目换成了一个 Web App:选一首歌,拿到歌词,同步翻译成中文;如果是日文或韩文,再附上注音,然后变身语言老师,一句一句教你读。说白了,就是做一个"用歌学语言"的工具。
![]()
结果 TTS 本身的质量没什么可抱怨的,真正花时间的,是它周边那些文档里没写的东西。
这次 GA 到底放了什么
这一批上线了两个模型。相比上一代,我觉得真正有用的有三点:
- 声音设计:用一段文字描述生成声音,比如"一位 60 岁、带英国口音、语调温暖的天文学家"。生成的声音会拿到一个 voice_id,可以反复使用。
- 声音复刻:用 10 到 30 秒的录音复刻一个人的声音。前提是声音本人必须录一段同意声明,输出的音频会带上 SynthID 水印和 C2PA 标记。
- 逐句表演控制:每一段文字都可以带一个 style,比如"慢慢说,每个音节都念清楚",还支持 、 这类标签,以及最多两人对话。
实际调用结构和过去的 generate_content 不一样,换成了两组 API:interactions 和 voices。用文字描述设计声音是一次性的,存下来复用;用这个声音读句子时,style 控制语气和速度。
动手之前先处理歌词版权
"输入歌名,自动抓歌词"是最直观的做法,但它会卡在两个地方。一是版权:歌词站是付了授权费才能展示的,抓下来展示全文再加翻译(法律上算衍生作品),公开上线有侵权风险。二是技术:就算让 Gemini 配合 Google 搜索,它也有防止复现受版权保护文本的机制,经常返回 finishReason: RECITATION。
那换个思路:把 YouTube MV 链接直接丢给 Gemini,让它转录歌词。技术上可行,Gemini API 接受公开的 YouTube URL。但要说清楚:换一种方式拿到歌词,并不等于合法。不管是抓站、手打,还是 AI 从 MV 转录,都是同一段受保护的文本,决定风险的是你怎么用它。
所以我的决定是:这是个个人学习工具,歌词只存在于本地的 output/ 文件夹,这个文件夹从第一次提交就写进了 .gitignore,从不出现在 GitHub 上。开发过程中我也要求 Claude Code 在验证数据时只打印统计信息,绝不把歌词打印到终端或写进任何日志。
三个 Python 脚本加一个 Next.js
整个架构是这样跑的:YouTube URL 进 transcribe.py,出歌词和时间轴;再进 annotate.py,出注音、翻译、逐词拆解、语法点;然后进 speak.py,出老师示范音(正常速和慢速各一版);最后由 Next.js 呈现,配合 MV 一句一句学。
转录这一步,transcribe.py 把 YouTube URL 当作 file_data 发给 gemini-3.8-flash,用结构化输出要求每句都给出开始结束时间、原文、日文假名,以及一个"听不清"的标记。提示词里最关键的一句是:如果 MV 画面上有歌词字幕,优先使用字幕。唱比说难转录得多,因为有伴奏、拖长音、和声;日文还有同音问题,听到"kimi"不知道是"君"还是"きみ"。有字幕的话,Gemini 一边看画面一边听,准确率会高很多。
我拿三首歌测过,结构是完整的:没有空句,时间没有倒流,也没有同一句连续重复(模型出错时常见的症状)。唯一让我不放心的是,每一句都被标成了"确定",包括两句其实是靠音频判断的。模型太自信了,这个我之后再用别的办法修。
注音这一步,别全交给 LLM
annotate.py 给每句加上繁体中文翻译、逐词拆解(读音、词性、意思)、一个语法点,还有一条发音提示。副歌会重复,所以只对不重复的句子调用 Gemini,省了大概三到四成。
注音是这一段里最有意思的部分。我原本的想法是用现成的库,比 LLM 可靠,但两个都失败了……
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.