You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将带连字符的美国电话号码转换为指定格式的英文单词(0转为oh)

如何将带连字符的美国电话号码转换为指定格式的英文单词(0转为oh)

嘿,我太懂你这种TTS处理电话号码的烦恼了!新闻类内容对发音准确性要求特别高,默认的TTS读号码要么串成一堆模糊的数字,要么停顿位置不对,真的很影响听众体验。针对你说的把123-456-7890转成one two three, four five six, seven eight nine oh的需求,我给你分享个简单直接的实现思路:

首先得抓准核心需求:

  • 把每个数字转换成对应的口语化英文单词,0要换成oh(新闻播报里读oh比zero更贴合日常口语习惯)
  • 原号码里的连字符要替换成, ,给TTS一个明确的停顿信号

我用Python写了个小函数,逻辑特别清晰,你可以直接复用,或者改成你项目用的语言:

def phone_to_tts_words(phone_number):
    # 数字到口语化英文单词的映射表
    num_to_word = {
        '0': 'oh',
        '1': 'one',
        '2': 'two',
        '3': 'three',
        '4': 'four',
        '5': 'five',
        '6': 'six',
        '7': 'seven',
        '8': 'eight',
        '9': 'nine'
    }
    processed_parts = []
    for char in phone_number:
        if char == '-':
            # 把连字符替换成带停顿的逗号格式
            processed_parts.append(', ')
        else:
            # 数字转成对应的单词
            processed_parts.append(num_to_word[char])
    # 拼接所有部分得到最终字符串
    return ' '.join(processed_parts)

# 测试下效果
print(phone_to_tts_words('123-456-7890'))
# 输出结果:one two three, four five six, seven eight nine oh

这个方法的优势是完全可控:

  • 要是你需要调整停顿方式,比如把, 换成; 或者其他TTS能识别的停顿标记,直接改连字符的替换内容就行
  • 数字映射表可以灵活调整,比如某些场景需要把0读成zero,只需要修改字典里的对应值
  • 遍历的逻辑不管是美国标准10位带连字符的号码,还是其他类似格式的短号码,都能轻松处理

要是你用的不是Python,思路也完全通用:先做数字到单词的映射,再逐个字符处理,替换掉连字符和数字就行,用JavaScript、Java这类语言都能快速实现。

备注:内容来源于stack exchange,提问作者Brian Schultz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.13 16:20:33