| 123456789101112131415161718192021222324252627282930313233343536 |
- import test from 'node:test';
- import assert from 'node:assert/strict';
- import { parseIflytekResult } from '../src/result-parser.mjs';
- function lattice(text, { bg, ed, role }) {
- return {
- json_1best: JSON.stringify({
- st: {
- bg: String(bg),
- ed: String(ed),
- rl: role,
- rt: [{ ws: [...text].map(character => ({ cw: [{ w: character }] })) }],
- },
- }),
- };
- }
- test('解析正文、时间和说话人,并合并连续同一说话人', () => {
- const raw = JSON.stringify({
- lattice: [
- lattice('你好', { bg: 0, ed: 500, role: 1 }),
- lattice('世界', { bg: 500, ed: 900, role: 1 }),
- lattice('您好', { bg: 900, ed: 1300, role: 2 }),
- ],
- });
- const result = parseIflytekResult(raw);
- assert.equal(result.text, '你好 世界 您好');
- assert.deepEqual(result.segments, [
- { text: '你好世界', startMs: 0, endMs: 900, speakerId: '1' },
- { text: '您好', startMs: 900, endMs: 1300, speakerId: '2' },
- ]);
- });
- test('损坏结果安全返回空正文', () => {
- assert.deepEqual(parseIflytekResult('{bad json'), { text: '', segments: [] });
- });
|