Python如何从Excel表格提取拼音表实现TTS引擎单字拼音化


Python如何从Excel表格提取拼音表实现TTS引擎单字拼音化
1 回复

要提取Excel中的拼音表并实现TTS引擎单字拼音化,可以分两步走:先用pandas读取Excel,再用pypinyin库将汉字转为拼音。下面是一个完整的代码示例:

import pandas as pd
from pypinyin import lazy_pinyin, Style

def excel_to_pinyin(excel_path, sheet_name=0, column_name=None):
    """
    从Excel提取指定列的汉字并转为拼音
    
    Args:
        excel_path: Excel文件路径
        sheet_name: 工作表名或索引
        column_name: 列名,如果为None则取第一列
    """
    # 读取Excel
    df = pd.read_excel(excel_path, sheet_name=sheet_name)
    
    # 确定要处理的列
    if column_name is None:
        column_name = df.columns[0]
    
    # 提取汉字文本
    chinese_texts = df[column_name].astype(str).tolist()
    
    # 转为拼音
    pinyin_list = []
    for text in chinese_texts:
        # 使用lazy_pinyin获取不带声调的拼音
        pinyin = lazy_pinyin(text, style=Style.NORMAL)
        pinyin_list.append(' '.join(pinyin))
    
    # 创建结果DataFrame
    result_df = pd.DataFrame({
        '汉字': chinese_texts,
        '拼音': pinyin_list
    })
    
    return result_df

# 使用示例
if __name__ == "__main__":
    # 假设Excel文件名为"data.xlsx",第一列是汉字
    result = excel_to_pinyin("data.xlsx")
    
    # 查看前几行结果
    print(result.head())
    
    # 保存结果到新Excel
    result.to_excel("pinyin_result.xlsx", index=False)

对于TTS引擎的单字拼音化,需要将每个汉字单独转为拼音:

def character_to_pinyin(text):
    """将文本中的每个汉字转为单独拼音"""
    pinyin_result = []
    for char in text:
        if '\u4e00' <= char <= '\u9fff':  # 判断是否为汉字
            pinyin = lazy_pinyin(char, style=Style.NORMAL)[0]
            pinyin_result.append(pinyin)
        else:
            pinyin_result.append(char)  # 非汉字保持原样
    
    return ' '.join(pinyin_result)

# 示例:单字拼音化
sample_text = "你好世界"
print(character_to_pinyin(sample_text))  # 输出: ni hao shi jie

总结建议:用pandas读Excel,pypinyin转拼音,注意处理非汉字字符。

回到顶部