用 Suno 做粤语歌常见的问题是歌词明明是粤语唱出来却带普通话口音或者个别字读错。我的做法是先把歌词转成粤拼Jyutping校对一遍再拿去试唱。手动查字典太慢。下面这段脚本用 pycantonese 做转换用 OpenCC 处理简体字三十来行一次转完整首歌词。环境Python 3.9.63.8 及以上应该都可以pycantonese 3.4.0opencc-python-reimplemented 0.1.7pipinstallpycantonese opencc-python-reimplemented代码把粤语歌词逐行转成粤拼。 依赖pip install pycantonese opencc-python-reimplemented 用法python lyrics2jyutping.py 歌词.txt 对照版字(粤拼)方便校对 python lyrics2jyutping.py 歌词.txt --plain 纯粤拼版用来填进 Suno 试唱 importreimportsysimportopenccimportpycantonese# pycantonese 的语料是繁体字简体的「灯」「这」「们」会查不到先转成港式繁体TO_HKopencc.OpenCC(s2hk)defline_to_jyutping(line,plainFalse):out[]forword,jpinpycantonese.characters_to_jyutping(TO_HK.convert(line)):ifjpisNone:# 标点、英文、段落标签、查不到的字原样保留out.append(word)continuesyllables[str(s)forsinpycantonese.parse_jyutping(jp)]ifplain:out.append( .join(syllables) )eliflen(syllables)len(word):out.extend(f{ch}({s})forch,sinzip(word,syllables))else:# 少数词的音节数和字数对不上就整词标注out.append(f{word}({jp}))ifplain:returnre.sub(r\s([。、,.!?]),r\1, .join(.join(out).split()))return.join(out)if__name____main__:plain--plaininsys.argvwithopen(sys.argv[1],encodingutf-8)asf:forrawinf:lineraw.rstrip(\n)print(line_to_jyutping(line,plain)ifline.strip()else)运行效果输入demo.txt今晚夜色好美 我哋一齊唱首歌 [Chorus] 香港嘅街燈照住你同我对照版python lyrics2jyutping.py demo.txt今(gam1)晚(maan1)夜(je6)色(sik1)好(hou2)美(mei5) 我(ngo5)哋(dei6)一(jat1)齊(cai4)唱(coeng3)首(sau2)歌(go1) [Chorus] 香(hoeng1)港(gong2)嘅(ge3)街(gaai1)燈(dang1)照(ziu3)住(zyu6)你(nei5)同(tung4)我(ngo5)纯粤拼版加--plaingam1 maan1 je6 sik1 hou2 mei5 ngo5 dei6 jat1 cai4 coeng3 sau2 go1 [Chorus] hoeng1 gong2 ge3 gaai1 dang1 ziu3 zyu6 nei5 tung4 ngo5踩过的几个坑1. 简体字会查不到。pycantonese 的语料是繁体字直接传简体的「街灯」「这一刻」「我们」「灯」「这」「们」三个字会原样返回、没有粤拼。所以代码里先用 OpenCC 的s2hk转成港式繁体再查输出的汉字也因此是繁体。2. 会给出口语变调。上面「今晚」输出的是 gam1 maan1不是字典里的 maan5。pycantonese 的读音来自粤语口语语料口语里常见的变调会照实给出来。唱歌想用哪个读音转完以后手动改。3. 多音字要通读。库是先切词再查读音所以整句一起转比逐字转准确但不能保证每个多音字都对。转完一定要从头读一遍。4. 段落标签不受影响。[Verse]、[Chorus]这类标签里没有中文字会原样保留不影响 Suno 识别歌曲结构。5. 少数词对不齐。极少数词的音节数和字数对不上代码里就整词标注免得把读音标到别的字上。怎么填进 Suno两种用法按需选整段换成纯粤拼只给容易读错的那几个字换成粤拼其余保留汉字。哪种效果好以你自己小段试听为准。我的习惯是先生成一小段哪个字不对就只改那一个字不整首重来省积分也省时间。不想写代码的话如果不想自己装环境风聆Studio 里也有粤语歌词转拼音粘贴歌词就能转段落标签会保留。这是我们团队做的 Suno 上传与歌词工具有 Mac 和 Windows 版官网是 gnmusic.cn。利益相关风聆Studio 是我们团队做的。本文代码可以随意使用和修改。