协作头脑风暴
brainstorming
在实现前澄清需求、探索设计选择,并形成清晰的开发方向。
speak-hello-world【开发与工程】Create your first Speak AI tutoring session with pronunciation feedback. Use when starting a new Speak integration, testing your setup, or learning basic language learning API patterns. Trigger with phrases like "speak hello world", "speak example", "speak quick start", "first speak lesson".
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
name: speak-hello-world description: 'Create your first Speak AI tutoring session with pronunciation feedback.
Use when starting a new Speak integration, testing your setup,
or learning basic language learning API patterns.
Trigger with phrases like "speak hello world", "speak example",
"speak quick start", "first speak lesson".
' allowed-tools: Read, Write, Edit, Bash(npm:), Bash(node:) version: 1.14.0 license: MIT author: Jeremy Longshore jeremy@intentsolutions.io tags:
Create your first AI tutoring session with Speak. Demonstrates conversation practice, pronunciation assessment, and real-time feedback using GPT-4o-powered tutoring.
speak-install-auth setupimport { SpeakClient } from '@speak/language-sdk';
const client = new SpeakClient({
apiKey: process.env.SPEAK_API_KEY!,
appId: process.env.SPEAK_APP_ID!,
language: 'es',
});
// Start a beginner Spanish lesson
const session = await client.startConversation({
scenario: 'greetings',
language: 'es',
level: 'beginner',
nativeLanguage: 'en',
});
console.log('Session ID:', session.id);
console.log('AI Tutor:', session.firstPrompt.text);
// Output: "Hola! Bienvenido a tu leccion de espanol. Como te llamas?"
console.log('Audio URL:', session.firstPrompt.audioUrl);
// Submit text response (or audio file for pronunciation scoring)
const turn = await client.sendTurn(session.id, {
text: 'Hola, me llamo Juan. Mucho gusto.',
// Or: audioPath: './recordings/response.wav'
});
console.log('Tutor response:', turn.tutorText);
console.log('Pronunciation score:', turn.pronunciationScore); // 0-100
console.log('Grammar corrections:', turn.corrections);
// Output: [{original: "me llamo", suggestion: null, correct: true}]
console.log('Vocabulary notes:', turn.vocabularyNotes);
// Assess pronunciation of a specific phrase
const assessment = await client.assessPronunciation({
audioPath: './recordings/hola-como-estas.wav',
targetText: 'Hola, como estas?',
language: 'es',
detailLevel: 'phoneme', // 'word' or 'phoneme'
});
console.log(`Overall score: ${assessment.score}/100`);
for (const word of assessment.words) {
console.log(` "${word.text}": ${word.score}/100`);
if (word.phonemes) {
for (const p of word.phonemes.filter(p => p.score < 70)) {
console.log(` Weak phoneme: ${p.symbol} (${p.score}) - ${p.suggestion}`);
}
}
}
const summary = await client.endSession(session.id);
console.log('Session Summary:');
console.log(` Duration: ${summary.durationMinutes} min`);
console.log(` Turns: ${summary.totalTurns}`);
console.log(` Pronunciation: ${summary.avgPronunciationScore}/100`);
console.log(` Grammar: ${summary.grammarAccuracy}%`);
console.log(` New vocabulary: ${summary.newWords.join(', ')}`);
| Error | Cause | Solution |
|---|---|---|
| Session timeout | Exceeded max duration | Start a new session |
| Audio format invalid | Wrong codec or sample rate | Convert to WAV 16kHz mono |
| Language not supported | Invalid language code | Use supported codes (es, ko, ja, fr, de) |
| Low pronunciation score | Background noise | Record in a quiet environment |
| Rate limit exceeded | Too many requests | Wait and retry with backoff |
Proceed to speak-local-dev-loop for development workflow setup.
Text-only test: Skip audio and use text responses to test the conversation flow before integrating microphone input.
Multi-language: Start sessions in different languages by changing the language parameter to ko (Korean), ja (Japanese), or fr (French).