64 lines
1.8 KiB
Python
64 lines
1.8 KiB
Python
import nls
|
||
import pyaudio
|
||
import time
|
||
from tests.test_utils import TEST_ACCESS_TOKEN, TEST_ACCESS_APPKEY
|
||
|
||
|
||
test_text = [
|
||
"流式文本语音合成SDK,",
|
||
"可以将输入的文本",
|
||
"合成为语音二进制数据,",
|
||
"相比于非流式语音合成,",
|
||
"流式合成的优势在于实时性",
|
||
"更强。用户在输入文本的同时",
|
||
"可以听到接近同步的语音输出,",
|
||
"极大地提升了交互体验,",
|
||
"减少了用户等待时间。",
|
||
"适用于调用大规模",
|
||
"语言模型(LLM),以",
|
||
"流式输入文本的方式",
|
||
"进行语音合成的场景。",
|
||
]
|
||
|
||
if __name__ == "__main__":
|
||
player = pyaudio.PyAudio()
|
||
stream = player.open(format=pyaudio.paInt16, channels=1, rate=24000, output=True)
|
||
|
||
# 创建SDK实例
|
||
# 配置回调函数
|
||
def test_on_data(data, *args):
|
||
stream.write(data)
|
||
|
||
def test_on_message(message, *args):
|
||
print('on message=>{}'.format(message))
|
||
|
||
def test_on_close(*args):
|
||
print('on_close: args=>{}'.format(args))
|
||
|
||
def test_on_error(message, *args):
|
||
print('on_error args=>{}, message=>{}'.format(args, message))
|
||
|
||
sdk = nls.NlsStreamInputTtsSynthesizer(
|
||
token=TEST_ACCESS_TOKEN,
|
||
appkey=TEST_ACCESS_APPKEY,
|
||
on_data=test_on_data,
|
||
on_sentence_begin=test_on_message,
|
||
on_sentence_synthesis=test_on_message,
|
||
on_sentence_end=test_on_message,
|
||
on_completed=test_on_message,
|
||
on_error=test_on_error,
|
||
on_close=test_on_close,
|
||
callback_args=[],
|
||
)
|
||
|
||
# 发送文本消息
|
||
sdk.startStreamInputTts()
|
||
for text in test_text:
|
||
sdk.sendStreamInputTts(text)
|
||
time.sleep(0.05)
|
||
sdk.stopStreamInputTts()
|
||
|
||
stream.stop_stream()
|
||
stream.close()
|
||
player.terminate()
|