我正在尝试从通话音频媒体中获取音频流,以便将其发送到语音转文本引擎(从流输入中转录音频)。关于如何实现这一目标的任何想法?
版本信息:POSIX的pjlib 2.8-svn
谢谢。
答案 0 :(得分:0)
使用Call类的onCallMediaState中的getAudioMedia(),我们可以获得调用的AudioMedia, 那样的东西(C ++中的简单方法):
void SipCall::onCallMediaState(OnCallMediaStateParam &prm) {
this->callInfo = getInfo();
unsigned media_size = this->callInfo.media.size();
for (unsigned i = 0; i < media_size; i++) { // ci.media.size()
AudioMedia audioMedia = getAudioMedia(i);
// do somthing with audio Media
// example send to audio device:
// AudDevManager& manager = Endpoint::instance().audDevManager();
// audioMedia.startTransmit(manager.getPlaybackDevMedia());
// do something....
}
}
对不起,但我希望它能对您有所帮助。
答案 1 :(得分:0)
我从pjsip常见问题解答中找到了一个建议:https://trac.pjsip.org/repos/wiki/FAQ#audio-man
您可以通过创建新端口来获取实时音频媒体,并在mem_capture.c
和wav_writer.c
中找到有用的信息:
对于仅接收器媒体端口,示例包括:
mem_capture.c
来自pjmedia(用于将音频保存到缓冲区的媒体端口)。wav_writer.c
来自pjmedia(用于将音频保存到WAVE文件的媒体端口)。