AWS 노바 소닉 목소리
그만큼NovaSonicVoice클래스는 실시간 음성 대 음성 기능을 제공합니다.AWS 베드락 노바 2 소닉. Model에 대한 양방향 스트림을 열고 보조 오디오, 기록된 텍스트, Tool 호출, 회전 경계 및 중단에 대한 이벤트를 내보냅니다.
사용예사용예에 대한 직접 링크
import { NovaSonicVoice } from '@mastra/voice-aws-nova-sonic'
import { playAudio, getMicrophoneStream } from '@mastra/node-audio'
// Initialize using the default AWS credential provider chain
const voice = new NovaSonicVoice({
region: 'us-east-1',
speaker: 'matthew',
})
// Or pass explicit credentials
const voiceWithCredentials = new NovaSonicVoice({
region: 'us-east-1',
speaker: 'tiffany',
credentials: {
accessKeyId: process.env.AWS_ACCESS_KEY_ID!,
secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY!,
},
})
// Establish the bidirectional stream
await voice.connect()
// Listen for assistant audio (Int16Array PCM)
voice.on('speaking', ({ audioData }) => {
if (audioData) playAudio(audioData)
})
// Listen for transcribed text from the user and assistant
voice.on('writing', ({ text, role, generationStage }) => {
console.log(`${role} (${generationStage ?? 'FINAL'}): ${text}`)
})
// Stream microphone audio in real time
const microphoneStream = getMicrophoneStream()
await voice.send(microphoneStream)
// Disconnect when done
voice.close()
입증입증에 대한 직접 링크
credentials 옵션을 전달하지 않으면 NovaSonicVoice는 AWS SDK 자격 증명 확인 체인을 사용합니다. Mastra는 @aws-sdk/credential-provider-node의 defaultProvider()를 호출하며, 이 함수는 환경 변수, 공유 자격 증명 파일, EC2의 IAM 역할, ECS, EKS 및 기타 표준 소스를 차례로 확인합니다.
정적 자격 증명을 사용하려면 생성자에 전달하세요.
new NovaSonicVoice({
region: 'us-east-1',
credentials: {
accessKeyId: process.env.AWS_ACCESS_KEY_ID!,
secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY!,
sessionToken: process.env.AWS_SESSION_TOKEN,
},
})
음성 제공자는 자격 증명 값을 기록하지 않습니다.
구성구성에 대한 직접 링크
생성자 옵션생성자 옵션에 대한 직접 링크
region?:
model?:
credentials?:
speaker?:
languageCode?:
instructions?:
tools?:
sessionConfig?:
debug?:
세션 구성세션 구성에 대한 직접 링크
sessionConfig추론 매개변수와 순서대로 동작을 제어합니다. 모든 필드는 선택 사항입니다.
inferenceConfiguration?:
maxTokens?:
temperature?:
topP?:
topK?:
stopSequences?:
turnDetectionConfiguration?:
endpointingSensitivity?:
toolChoice?:
enableKnowledgeGrounding?:
knowledgeBaseConfig?:
행동 양식행동 양식에 대한 직접 링크
connect()connect에 대한 직접 링크
AWS Bedrock에 대한 양방향 스트림을 열고 초기 세션, Prompt 및 시스템 이벤트를 전송합니다. speak, listen 또는 send를 호출하기 전에 이 메서드를 호출하세요.
options?:
보고:Promise<void>
speak()speak에 대한 직접 링크
텍스트 Prompt의 음성을 합성하고 오디오가 생성되는 동안 speaking 이벤트를 내보냅니다.
input:
options?:
보고:Promise<void>
send()send에 대한 직접 링크
마이크 오디오(또는 모든 PCM 소스)를 Model로 스트리밍합니다. 실시간으로 지속적인 대화를 하려면 이 기능을 사용하세요.
audioData:
보고:Promise<void>
listen()listen에 대한 직접 링크
send()에 위임하는 편의 래퍼입니다. 유한한 오디오 스트림을 한 번만 전사하려는 경우 사용하세요.
audioData:
보고:Promise<void>
endAudioInput()endaudioinput에 대한 직접 링크
Model이 응답을 마무리할 수 있도록 현재 오디오 턴의 끝을 신호로 보냅니다. 사용자가 말하기를 멈추고 공급자가 서버 측 회전 감지에 대해 구성되지 않은 경우 이 호출을 호출하세요.
보고:Promise<void>
addInstructions()addinstructions에 대한 직접 링크
활성 세션에 대한 시스템 Prompt를 업데이트합니다.
instructions?:
보고:void
addTools()addtools에 대한 직접 링크
음성 인스턴스에 Tools를 등록합니다. NovaSonicVoice가 Agent에 연결되면 Agent의 Tools가 자동으로 추가됩니다.
tools?:
보고:void
getSpeakers()getspeakers에 대한 직접 링크
Nova 2 Sonic에서 지원하는 음성 목록을 반환합니다.
보고:Promise<Array<{ voiceId: string; name: string; language: string; locale: string; gender: 'masculine' | 'feminine'; polyglot: boolean }>>
getListener()getlistener에 대한 직접 링크
음성 인스턴스가 현재 공개 스트림을 보유하고 있는지 여부를 반환합니다.
보고:Promise<{ enabled: boolean }>
close()close에 대한 직접 링크
양방향 스트림을 닫고 기본 Bedrock 클라이언트를 삭제합니다. 대화가 끝나면 이것을 호출하세요.
보고:void
on() / off()on--off에 대한 직접 링크
이벤트 리스너를 등록하고 제거합니다. 공통 이벤트 API는 Voice 이벤트를 참조하세요.
이벤트이벤트에 대한 직접 링크
NovaSonicVoice다음 이벤트를 내보냅니다.
speaking:
writing:
toolCall:
interrupt:
turnComplete:
session:
usage:
error:
generationStage는 임시 전사문('SPECULATIVE')과 확정된 전사문('FINAL')을 구분합니다. 영구 저장에는 'FINAL' 텍스트를 사용하고 실시간 자막에는 'SPECULATIVE' 텍스트를 사용하세요.
사용 가능한 음성사용 가능한 음성에 대한 직접 링크
Nova 2 Sonic은 10개 지역에서 음성을 제공합니다. Tiffany와 Matthew는 다중 언어를 구사하며 지원되는 모든 언어를 구사할 수 있습니다.
| 음성 ID | 이름 | 언어 | 로케일 | 성별 | 다국어 |
|---|---|---|---|---|---|
tiffany | Tiffany | 영어 | en-US | 여성 | 예 |
matthew | Matthew | 영어 | en-US | 남성 | 예 |
amy | Amy | 영어 | en-GB | 여성 | 아니요 |
olivia | Olivia | 영어 | en-AU | 여성 | 아니요 |
kiara | Kiara | 영어 | en-IN | 여성 | 아니요 |
arjun | Arjun | 영어 | en-IN | 남성 | 아니요 |
ambre | Ambre | 프랑스어 | fr-FR | 여성 | 아니요 |
florian | Florian | 프랑스어 | fr-FR | 남성 | 아니요 |
beatrice | Beatrice | 이탈리아어 | it-IT | 여성 | 아니요 |
lorenzo | Lorenzo | 이탈리아어 | it-IT | 남성 | 아니요 |
tina | Tina | 독일어 | de-DE | 여성 | 아니요 |
lennart | Lennart | 독일어 | de-DE | 남성 | 아니요 |
lupe | Lupe | 스페인어 | es-US | 여성 | 아니요 |
carlos | Carlos | 스페인어 | es-US | 남성 | 아니요 |
carolina | Carolina | 포르투갈어 | pt-BR | 여성 | 아니요 |
leo | Leo | 포르투갈어 | pt-BR | 남성 | 아니요 |
kiara | Kiara | 힌디어 | hi-IN | 여성 | 아니요 |
arjun | Arjun | 힌디어 | hi-IN | 남성 | 아니요 |
참고 사항참고 사항에 대한 직접 링크
- 오디오는 16비트 PCM으로 스트리밍됩니다. 어시스턴트 오디오는
speaking이벤트에서Int16Array로 내보내집니다. - 다른 스트리밍 메서드를 사용하기 전에 음성 인스턴스에서
connect()를 호출해야 합니다. close()는 내부BedrockRuntimeClient를 제거하여 HTTP/2 세션을 해제합니다.- Nova 2 Sonic은
us-east-1,us-west-2,ap-northeast-1에서 사용할 수 있습니다. 다른 리전에서는 생성 중 구성 오류가 발생합니다.