mi-gpt/tests/speaker.ts

105 lines
4.8 KiB
TypeScript
Raw Normal View History

2024-02-23 10:10:53 +00:00
import { AISpeaker } from "../src/services/speaker/ai";
import { StreamResponse } from "../src/services/speaker/stream";
2024-02-23 10:10:53 +00:00
import { sleep } from "../src/utils/base";
2024-02-24 12:13:25 +00:00
export async function testSpeaker() {
2024-06-01 03:45:24 +00:00
const speaker = new AISpeaker({
2024-02-23 10:10:53 +00:00
userId: process.env.MI_USER!,
password: process.env.MI_PASS!,
did: process.env.MI_DID,
2024-06-01 03:45:24 +00:00
tts: "xiaoai",
debug: true,
});
2024-02-23 10:10:53 +00:00
await speaker.initMiServices();
// await testSpeakerResponse(speaker);
2024-06-01 03:45:24 +00:00
await testSpeakerStreamResponse(speaker);
2024-02-23 10:10:53 +00:00
// await testSpeakerGetMessages(speaker);
// await testSwitchSpeaker(speaker);
// await testSpeakerUnWakeUp(speaker);
2024-06-01 03:45:24 +00:00
// await testAISpeaker(speaker);
2024-02-23 10:10:53 +00:00
}
async function testAISpeaker(speaker: AISpeaker) {
speaker.askAI = async (msg) => {
return { text: "你说:" + msg.text };
2024-02-23 10:10:53 +00:00
};
await speaker.run();
console.log("finished");
}
async function testSpeakerUnWakeUp(speaker: AISpeaker) {
await speaker.wakeUp();
await sleep(1000);
await speaker.unWakeUp();
console.log("hello");
}
async function testSwitchSpeaker(speaker: AISpeaker) {
await speaker.response({ text: "你好,我是傻妞,很高兴认识你!" });
2024-02-23 10:10:53 +00:00
const success = await speaker.switchDefaultSpeaker("魅力苏菲");
console.log("switchDefaultSpeaker 魅力苏菲", success);
await speaker.response({ text: "你好,我是傻妞,很高兴认识你!" });
2024-02-23 10:10:53 +00:00
console.log("hello");
}
async function testSpeakerGetMessages(speaker: AISpeaker) {
let msgs = await speaker.getMessages({ filterTTS: true });
console.log("filterTTS msgs", msgs);
msgs = await speaker.getMessages({ filterTTS: false });
console.log("no filterTTS msgs", msgs);
}
async function testSpeakerResponse(speaker: AISpeaker) {
let status = await speaker.MiNA!.getStatus();
console.log("curent status", status);
await speaker.response({ text: "你好,我是傻妞,很高兴认识你!" });
2024-02-23 10:10:53 +00:00
sleep(1000);
status = await speaker.MiNA!.getStatus();
console.log("tts status", status);
}
2024-02-24 12:13:25 +00:00
async function testSpeakerStreamResponse(speaker: AISpeaker) {
const stream = new StreamResponse();
2024-06-01 03:45:24 +00:00
const text = `
###
1. ****
2. ****
3. ****西
4. ****
5. ****
###
1. ****
2. **西**西
3. ****
4. ****
5. ****
`;
2024-02-24 12:13:25 +00:00
const add = async (text: string) => {
stream.addResponse(text);
await sleep(100);
};
setTimeout(async () => {
2024-06-01 03:45:24 +00:00
for (const s of text.split("")) {
await add(s);
}
2024-02-24 12:13:25 +00:00
stream.finish();
});
await speaker.response({ stream });
console.log("hello!");
}