import pyttsx3 from pydub import AudioSegment import csv import requests import time import os import subprocess
# 读取 CSV 文件 words = [] with open('words.csv', 'r', encoding='utf-8') as file: reader = csv.reader(file) for row in reader: words.append((row[0], row[1])) # (word, meaning)
# 生成中文和英文发音并合并到一个音频文件中 for word, meaning in words: # 生成中文发音 engine.save_to_file(meaning, 'temp_cn.wav') engine.runAndWait() audio_cn = AudioSegment.from_wav('temp_cn.wav')
# 请求有道接口并添加延迟 response = requests.get(f'https://dict.youdao.com/dictvoice?type=1&audio={word}') if response.status_code == 200: with open('temp_en.mp3', 'wb') as f: f.write(response.content) # 检查文件是否下载成功 if os.path.getsize('temp_en.mp3') > 0: try: # 使用 ffmpeg 将 MP3 转换为 WAV subprocess.run(['ffmpeg', '-i', 'temp_en.mp3', 'temp_en.wav']) audio_en = AudioSegment.from_wav('temp_en.wav') # 合并中文和英文发音 combined += audio_cn + AudioSegment.silent(duration=500) + audio_en + AudioSegment.silent(duration=1000) except Exception as e: print(f"Error processing {word}: {e}") else: print(f"Downloaded file for {word} is empty.") else: print(f"Failed to download audio for {word}, status code: {response.status_code}") # 删除临时 MP3 和 WAV 文件 if os.path.exists('temp_en.mp3'): os.remove('temp_en.mp3') if os.path.exists('temp_en.wav'): os.remove('temp_en.wav') # 添加延迟,防止请求过快 time.sleep(1) # 延迟1秒