> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# PartyChatControl::GetAudioManipulationVoiceStream

> Retrieves the audio manipulation voice stream associated with this chat control.

Retrieves the audio manipulation voice stream associated with this chat control.

## Syntax

```cpp theme={null}
PartyError GetAudioManipulationVoiceStream(  
    PartyAudioManipulationSourceStream** sourceStream  
)  
```

### Parameters

**`sourceStream`**   [PartyAudioManipulationSourceStream\*\*](/services/playfab/multiplayer/networking/reference/classes/PartyAudioManipulationSourceStream/partyaudiomanipulationsourcestream)\
*library-allocated output*

The source stream.

### Return value

PartyError

`c_partyErrorSuccess` if the call succeeded or an error code otherwise. The human-readable form of the error code can be retrieved via [PartyManager::GetErrorMessage()](/services/playfab/multiplayer/networking/reference/classes/PartyManager/methods/partymanager_geterrormessage).

## Remarks

In a local chat control, the stream represents the voice audio detected by the local audio input. Audio provided by this stream has already been preprocessed with Voice Activity Detection (VAD) and Automatic Gain Control (AGC). Audio is only provided when voice activity is detected. Typically, the app retrieves audio from this stream via PartyAudioManipulationSourceStream::GetNextBuffer(), process the audio using app logic, and then submits the audio back to the library. The audio is submitted back to the library by retrieving the voice sink stream via PartyLocalChatControl::GetAudioManipulationCaptureStream() and then submitting the buffer via [PartyAudioManipulationSinkStream::SubmitBuffer()](/services/playfab/multiplayer/networking/reference/classes/PartyAudioManipulationSinkStream/methods/partyaudiomanipulationsinkstream_submitbuffer). <br /><br /> Audio generated via [PartyLocalChatControl::SynthesizeTextToSpeech()](/services/playfab/multiplayer/networking/reference/classes/PartyLocalChatControl/methods/partylocalchatcontrol_synthesizetexttospeech) of type [PartySynthesizeTextToSpeechType::VoiceChat](/services/playfab/multiplayer/networking/reference/enums/partysynthesizetexttospeechtype) is provided via this source stream, because such audio acts as the associated user's voice.   <br /><br /> Audio retrieved via this stream hasn't been transcribed via speech-to-text for voice chat transcription. Audio that is submitted to a sink stream via PartyAudioManipulationSinkStream::SubmitBuffer() is transcribed, if transcription options configured via [PartyLocalChatControl::SetTranscriptionOptions](/services/playfab/multiplayer/networking/reference/classes/PartyLocalChatControl/methods/partylocalchatcontrol_settranscriptionoptions) indicates that audio associated the sink's chat control should be.   <br /><br /> In a remote chat control, the stream represents the chat control's incoming voice audio. Typically, the app retrieves audio from the voice streams associated with all remote chat controls via PartyAudioManipulationSourceStream::GetNextBuffer(), process and mix each buffer into a single audio stream, and then submits the mixed stream to be rendered by each appropriate sink stream. Each render stream can be retrieved via PartyLocalChatControl::GetAudioManipulationRenderStream().

## Requirements

**Header:** Party.h

## See also

[PartyChatControl](/services/playfab/multiplayer/networking/reference/classes/PartyChatControl/partychatcontrol)


## Related topics

- [PartyChatControl::ConfigureAudioManipulationVoiceStream](/services/playfab/multiplayer/networking/reference/classes/PartyChatControl/methods/partychatcontrol_configureaudiomanipulationvoicestream.md)
- [Apply custom voice effects with real-time audio manipulation](/services/playfab/community/voice-communications/concepts-realtime-audio-manipulation.md)
- [PartyConfigureAudioManipulationVoiceStreamCompletedStateChange](/services/playfab/multiplayer/networking/reference/structs/partyconfigureaudiomanipulationvoicestreamcompletedstatechange.md)
- [PartyLocalChatControl::GetAudioManipulationCaptureStream](/services/playfab/multiplayer/networking/reference/classes/PartyLocalChatControl/methods/partylocalchatcontrol_getaudiomanipulationcapturestream.md)
- [PartyLocalChatControl::GetAudioManipulationRenderStream](/services/playfab/multiplayer/networking/reference/classes/PartyLocalChatControl/methods/partylocalchatcontrol_getaudiomanipulationrenderstream.md)
