[asterisk-dev] Regarding realtime audio streaming from mixmonitor
Dennis Guse
hallo at dennisguse.de
Mon Jul 9 15:56:18 CDT 2018
Hi Mani,
just out of curiosity: what is your actual goal?
Do you need to create the transcriptions live or afterwards?
Best,
Dennis
On Fri, 2018-07-06 at 13:28 +0530, Mani Kanta Gadde wrote:
> Hi,
> We are trying to stream audio coming from calls to an NLP engine to get the text transcription, for this we created a socket in app_mixmonitor.c and we are writing audio frames to socket descriptor.
> We have tried with TCP(SOCK_STREAM) and UDP(SOCK_DGRAM) protocols to send the audio frames to the socket server.
>
> We are using latest asterisk complied from GitHub source code (asterisk repo).
>
> Here are some of the suggestions I found on asterisk forums
> http://forums.asterisk.org/viewtopic.php?f=13&t=89365#p196720
> on this thread, it was suggested to use CHANSPY, but we have edited mixmonitor code to both record and stream in realtime, which has sufficed our needs.
>
> Here is the socket code we used inside the mixmonitor_thread function in app_mixmonitor.c file.
>
> +
> + int sockfd;
> + char buffer[1024];
> + char *hello = "Hello from client";
> + struct sockaddr_in servaddr;
> +
> + // Creating socket file descriptor
> + if ( (sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0 ) {
> + ast_log(LOG_NOTICE, "socket creation failed");
> +// exit(EXIT_FAILURE);
> + }
> +
> + memset(&servaddr, 0, sizeof(servaddr));
> +
> + // Filling server information
> + servaddr.sin_family = AF_INET;
> + servaddr.sin_port = htons(8080);
> + servaddr.sin_addr.s_addr = INADDR_ANY;
> +
> + if (connect(sockfd,(struct sockaddr *) &servaddr,sizeof(servaddr)) < 0)
> + ast_log(LOG_ERROR, "ERROR connecting\n");
> + ast_log(LOG_NOTICE, "socket connected with server \n");
> +
> + //socket code ends here
>
> and here is the code of writing audio frames to the socket.
>
> for (cur = fr; cur; cur = AST_LIST_NEXT(cur, frame_list)) {
> ast_writestream(*fs, cur);
> + // writing to socket
> + write(sockfd, cur->data.ptr, cur->datalen);
> }
>
>
> And we were able to see the frames on the other side of the socket.
>
> We want to ask you if there is any other better approach to stream audio in real time.
>
> Thanks & Regards
> Manikanta
> Zemoso Technologies
>
--
Dennis Guse
More information about the asterisk-dev
mailing list