|
from fish_audio_sdk import Session, TTSRequest, ReferenceAudio
|
|
from pydub import AudioSegment
|
|
import io
|
|
|
|
from constants import FISHAUDIO_KEY,FISHAUDIO_SPEEKER
|
|
|
|
|
|
|
|
import random
|
|
|
|
def get_adapter_speeker_id(speaker_name):
|
|
speeker = FISHAUDIO_SPEEKER[0]
|
|
if speaker_name != "主持人":
|
|
speeker = random.choice(FISHAUDIO_SPEEKER)
|
|
return speeker["id"]
|
|
|
|
def fishaudio_tts(text, reference_id=None) -> AudioSegment:
|
|
"""
|
|
将给定的文本转换为语音并返回AudioSegment对象。
|
|
|
|
:param text: 要转换的文本
|
|
:param reference_id: 可选参数,使用的模型 ID
|
|
:return: 返回生成的语音的AudioSegment对象
|
|
"""
|
|
session = Session(FISHAUDIO_KEY)
|
|
audio_buffer = io.BytesIO()
|
|
for chunk in session.tts(TTSRequest(
|
|
reference_id=reference_id,
|
|
text=text
|
|
)):
|
|
audio_buffer.write(chunk)
|
|
audio_buffer.seek(0)
|
|
return AudioSegment.from_file(audio_buffer, format="mp3")
|
|
|