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转拼音,注意处理非汉字字符。

