| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- """测试:创建书籍 → 生成内容 → 生成音频"""
- import requests, json, time
- BASE = 'http://localhost:3000/api/book-generator/langgraph'
- # 1. 创建书籍
- print('1. 创建书籍...')
- r = requests.post(f'{BASE}/books', json={
- 'title': '测试3000字音频', 'description': 'CosyVoice 书籍音频测试',
- 'bookScale': '2000', 'totalChapters': 1
- })
- b = r.json()['data']['book']
- bookId = b['id']
- print(f' bookId={bookId}')
- # 2. 等大纲阶段完成
- print('2. 等待大纲生成...')
- for _ in range(30):
- time.sleep(3)
- r = requests.get(f'{BASE}/books/{bookId}')
- stage = r.json()['data']['book']['genStage']
- if stage not in ('draft', 'outlining'):
- print(f' 当前阶段: {stage}')
- break
- # 3. 用 debug 直接注入内容生成音频
- print('3. 用debug注入内容并生成音频...')
- r = requests.post(f'{BASE}/debug/trigger-full', json={
- 'bookId': bookId,
- 'voiceId': 'longyingling_v3',
- 'sampleText': (
- '第一章 春之序曲\n\n'
- '春天来了,万物复苏。轻柔的东风拂过大地,带走了冬日的严寒。'
- '山坡上,嫩绿的小草破土而出,像是给大地铺上了一层柔软的地毯。'
- '远处的杏花开了,粉白的颜色在阳光下显得格外温柔。'
- '小溪解冻了,清澈的溪水哗啦啦地流淌,唱着欢快的歌。'
- '鸟儿们从南方飞回来了,在枝头跳跃鸣叫,仿佛在诉说旅途的见闻。'
- '农民伯伯扛着锄头下地了,翻新的泥土散发着特有的清香。'
- '孩子们在田野里奔跑,放风筝,欢笑声回荡在蓝天白云之间。'
- '一年之计在于春,这个时候播下的种子,到了秋天就会收获满满的果实。'
- '春天是希望的季节,是一切美好的开始。'
- '\n第二章 夏之热烈\n\n'
- '夏天来了,太阳像个大火球挂在天上,热辣辣地烤着大地。'
- '知了在树上不停地叫着,仿佛在说太热了太热了。'
- '池塘里的荷花开了,粉嫩的花瓣在碧绿的荷叶映衬下格外好看。'
- '蜻蜓立在荷花尖上,透明的翅膀在阳光下闪着光。'
- '傍晚时分,人们纷纷走出家门,在树荫下乘凉聊天。'
- '老人们摇着蒲扇,讲着古老的故事,孩子们围坐一旁听得入神。'
- '夜空中繁星点点,偶尔有流星划过,带走了人们心中最美好的愿望。'
- '夏天的雨说来就来,豆大的雨点噼里啪啦打在地上,'
- '转眼间又雨过天晴,天空中出现一道美丽的彩虹。'
- '夏天是热烈的,是奔放的,是生命最旺盛的季节。'
- '\n第三章 秋之收获\n\n'
- '秋天来了,天高云淡,金风送爽。田野里一片金黄,'
- '沉甸甸的稻穗低垂着头,等待着收割的季节。'
- '果园里硕果累累,红彤彤的苹果挂满枝头,'
- '黄澄澄的梨子压弯了枝条,到处洋溢着丰收的喜悦。'
- '树叶开始变黄,一片片飘落下来,像是金色的蝴蝶在空中起舞。'
- '南飞的大雁排成人字形,向温暖的南方飞去。'
- '丰收的田野里,机器的轰鸣声和农民们爽朗的笑声交织在一起。'
- '家家户户的院子里晒满了金灿灿的玉米和红艳艳的辣椒,'
- '那是用汗水换来的最美图画。'
- '桂花开了,满城飘香,那是秋天独有的味道。'
- '秋天是成熟的季节,是收获的季节,是感恩的季节。'
- )
- })
- print(f' trigger result: {r.json().get("message")}')
- # 4. 等待音频生成
- print('4. 等待音频生成...')
- for _ in range(60):
- time.sleep(5)
- r = requests.get(f'{BASE}/books/{bookId}')
- chapters = r.json()['data']['book']['chapters']
- if chapters:
- for c in chapters:
- stage = c.get('genStage', '')
- audio_url = c.get('audioUrl', '')
- if audio_url or stage == 'audio_completed':
- print(f' 章节ID={c["id"]} stage={stage} audioUrl={audio_url[:60] if audio_url else "无"}')
- # 检查是否全部完成
- all_done = all(c.get('genStage') in ('audio_completed', 'video_completed') for c in chapters if c.get('genStage'))
- if all_done:
- print(' ✅ 全部章节音频生成完成!')
- break
- print(f' .', end='', flush=True)
|