html_and_vue/创建wav.py

70 lines
2.4 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

import re
import pandas as pd
import wave
import struct
# 打开Excel文件
def add_zero_to_title(title):
while len(title) < 3:
title = "0" + title
return title
def get_data(file_path, column_list, cv_name):
excel_data = pd.read_excel(file_path)
column_names = excel_data.columns.tolist()
title = column_names[0]
excel_data[title] = excel_data[title].ffill()
column_cv = column_names[2]
print(column_cv)
filter_value = cv_name
filtered_data = excel_data[excel_data[column_cv].astype(str).str.contains(filter_value, na=False)]
print(filtered_data)
wav_title_list = []
# 逐行读取指定列的数据
for index, row in filtered_data.iterrows():
title = row[column_list[0]]
title = re.findall(r"\d+\.?\d*", title)
title = add_zero_to_title(title[0])
role = row[column_list[1]]
num = row[column_list[2]]
print(num)
# wav_title = title[0] + '-' + role + '-' + cv_name + '-' + str(num)[:-2]
wav_title = title + '-' + role + '-' + cv_name + '-' + str(num)
wav_title_list.append(wav_title)
print(wav_title_list)
return wav_title_list
def creat_wav_file(wav_title_list):
# 设置音频参数
sample_width = 3 # 24位深度为3个字节
sample_rate = 44100 # 采样率为44100Hz
num_channels = 1 # 单声道
# 创建WAV文件
for file_name in wav_title_list:
with wave.open(r"G:\ready\绝天神印\{}.wav".format(file_name), 'w') as wav_file:
# 设置音频参数
wav_file.setsampwidth(sample_width)
wav_file.setframerate(sample_rate)
wav_file.setnchannels(num_channels)
# 生成音频数据
duration = 1 # 音频时长为10秒
num_samples = int(sample_rate * duration)
for i in range(num_samples):
# 生成一个24位整数的随机样本
sample = struct.pack('i', 0) # 这里设置为0你可以根据需要生成不同的音频样本
wav_file.writeframes(sample)
print('已成功创建{}文件'.format(file_name))
if __name__ == '__main__':
file_path = r"C:\Users\Administrator\Downloads\aadd.xlsx"
column_list = ['章节名称', '角色名', '台词量']
cv_name = '请叫我张钧'
wav_title_list = get_data(file_path, column_list, cv_name)
print(wav_title_list)
creat_wav_file(wav_title_list)