yin

golang-webrtc 初体验

golang-webrtc 初体验

本站专注于rtc、ai领域,为此我们会持续更新各类webrtc服务,解析webrtc源码,理解webrtc原理,分享给各个学习的同志。 我们选择ion-sfu git clone https://github.com/ionorg/ion-sfu.git 下载git,下载webrtc项目代码 我们启动json-rpc方式 执行 go build ./cmd/signal/json-rpc/main.go && ./main -c config.toml 启动服务后,我们需要p2p进行连接 这里我们得写前端js服务。 创建webrtc-peerConnection 对象 const peerConnection = new RTCPeerConnection({ iceServers: [ { urls: 'stun:stun.l.google.com:19302', }, { urls: 'turn:numb.
yin
freeswitch-asr处理流程

freeswitch-asr处理流程

我们在完全切入mrcp和freeswitch之间之前,我们先了解freeswitch-asr是如何处理的。 asr处理核心 freeswitch 源码现在已经将asr处理流程进行隔离。 freeswitch-设定了基于asr的 interface 我们先定位到freeswitch-源码: switch_core_asr.c SWITCH_DECLARE(switch_status_t) switch_core_asr_open(switch_asr_handle_t *ah, const char *module_name, const char *codec, int rate, const char *dest, switch_asr_flag_t *flags, switch_memory_pool_t *pool) { switch_status_
yin

webrtc-IDR request 关键帧

webrtc 采用UDP协议传输媒体数据,丢包的发生不可避免,webrtc为了弥补问题,使用了包括NACK、FEC、IDR request等方式进行处理。 其中NACK,可以理解问反向ack,当接收端发现有packet丢失时候,主动告知发送端进行数据发送。 nack一般处理逻辑,伪代码 def check_and_add_packet(): missed = False if self.max_seq is None: self.max_seq = packet.sequence_number return missed # mark missing packets if uint16_gt(packet.sequence_number, self.max_seq): seq = uint16_add(
yin
freeswitch和chatGPT连接难点

freeswitch和chatGPT连接难点

我们都知道自从去年openai退出chatGPT之后,chatGPT给世界带来的震撼和影响绝对是近几年来最伟大的ai革命。 几乎每个工程师现在都离不开chatGPT,但是如何将chatGPT的能力和freeswitch-sip电话打通,打造超级智能ai电话机器人,将是一个伟大的产品。 在我们打造freeswitch和chatGPT联通的过程中,我们遇到和解决了以下问题。 1: chatGPT-openai 接口速度慢 2:使用stream方式如何和用户进行友好交互 3:tts丝滑生成 4:如何做prompt让chatGPT合理处理 5:领域知识长文本如何与chatGPT做处理 如果你将上述问题做了很好的处理,那你一定能得到一个了不起的fs应用。 请期待我们的开源-freeswitch-chatGPT。
yin