python解析人物说话声音文件获取口型时间线数据代码
代码语言:python
所属分类:其他
代码描述:python解析人物说话声音文件获取口型时间线数据代码,可直接用于 2D/3D 口型驱动。
代码标签: python 解析 人物 说话 声音 文件 获取 口型 时间线 数据 代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
#!/usr/local/python3/bin/python3
# -*- coding: utf-8 -*
# 把 MP3 语音自动转成「口型(viseme)时间线」。核心思路是:
# 1) 用 Whisper 做带时间戳的语音识别(支持中文/英文),
# 2) 把词拆成音素(英文用 g2p_en;中文用 pypinyin 拆声母/韵母),
# 3) 将音素映射到常见口型类别(MBP、FV、AI、E、O、U、L、WQ、TH、SZ、SHCH、KG 等),
# 4) 按时间对齐生成一个口型序列,可直接用于 2D/3D 口型驱动。
# 安装依赖
# - 系统需安装 ffmpeg(用来解码 mp3)
# - macOS: brew install ffmpeg
# - Ubuntu: sudo apt-get install ffmpeg
# - Windows: choco install ffmpeg 或自行下载配置 PATH
# - Python 包(建议 Python 3.9+):
# pip install faster-whisper g2p_en pypinyin numpy
import os
import re
import json
from typing import List, Dict, Any
from faster_whisper import WhisperModel
from g2p_en import G2p
from pypinyin import pinyin, Style
# ========== 配置区域 ==========
# Whisper 模型大小: tiny / base / small / medium / large-v2
ASR_MODEL_SIZE = "small" # 可根据资源与需求调整
ASR_DEVICE = "cpu" # "cuda" 有 GPU 就用 cuda
ASR_COMPUTE_TYPE = "float32" # cuda 可用 "float16" 或 "int8_float16" 加速
# 英文元音(ARPAbet,不含重音数字)
VOWELS = {
"AA", "AE", "AH", "AO", "AW", "AY", "EH", "ER", "EY",
"IH", "IY", "OW", "OY", "UH", "UW"
}
# 一个常用的口型集合映射(你也可以按项目口型集自行修改/精简)
def arpabet_to_viseme(phone: str) -> str:
"""
将英文 ARPAbet 音素映射到口型(viseme)。
口型集包含:rest, MBP, FV, TH, L, WQ, SZ, SHCH, KG, AI, E, O, U
"""
p = re.sub(r"\d", "", phone).upper() # 去掉重音数字
if p in {"P", "B", "M"}:
return "MBP"
if p in {"F", "V"}:
return "FV"
if p in {"TH", "DH"}:
return "TH"
if p in {"L"}:
return "L"
if p in {"W", "R"}:
return "WQ"
if p in {"S", "Z", "TS", "DZ"}:
return "SZ"
if p in {"SH", "ZH", "CH", "JH"}:
return "SHCH"
if p in {"K", "G", "NG"}:
return "KG"
if p in {"HH"}:
return "rest"
# 元音类分组(可按项目视觉效果微调)
if p in {"AA", "AE", "AH", "AY"}:
return "AI".........完整代码请登录后点击上方下载按钮下载查看















网友评论0