IP Library Granted Patent US 8,559,469
Granted Patent B1
US 8,559,469 · App. 13/368,979 · Granted Oct 15, 2013

System and method for voice transmission over network protocols

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,559,469
App. No.
13/368,979
Granted
Oct 15, 2013
Kind
B1
Abstract

A system and method for voice transmission over high level network protocols. On the Internet and the World Wide Web, such high level protocols are HTTP/TCP. The restrictions imposed by firewalls and proxy servers are avoided by using HTTP level connections to transmit voice data. In addition, packet delivery guarantees are obtained by using TCP instead of UDP. Variable compression based on silence detection takes advantage of the natural silences and pauses in human speech, thus reducing the delays in transmission caused by using HTTP/TCP. The silence detection includes the ability to bookend the voice data sent with small portions of silence to insure that the voice sounds natural. Finally, the voice data is transmitted to each client computer independently from a common circular list of voice data, thus insuring that all clients will stay current with the most recent voice data. The combination of these features enables simple, seamless, and interactive Internet conferencing.

Claims (41)

1. A method, comprising:

receiving audio data as a plurality of frames by a presenting computer, the audio data being based on an individual human speaker's provided input sample audio data;

measuring energy of the audio data for the individual speaker over a fixed interval and determining an average energy level over the fixed interval;

determining a threshold based on the average energy level by calculating a predetermined fraction of the average energy level;

monitoring the plurality of frames to distinguish between periods of voice sound and periods of voice silence of the human speaker by applying the threshold to the plurality of frames;

determining whether each of the plurality of frames represents the voice silence or the voice sound;

storing at least one voice silence frame and at least one voice sound frame of the plurality of frames; and

appending the at least one voice silence frame and the at least one voice sound frame to a frame buffer used to store the plurality of frames.

2. The method of claim 1 , wherein said storing includes storing the audio data in the frame buffer having a predetermined size.

3. The method of claim 2 , comprising creating a voice buffer from the frame buffer.

4. The method of claim 3 , wherein said creating is accomplished by compressing the contents of the frame buffer.

5. The method of claim 4 , comprising saving the voice buffer in a data structure.

6. The method of claim 5 , comprising transmitting the stored audio data to one or more client computers. wherein said transmitting step comprises at least one of:

observing the data structure to identify when one or more new voice buffers have been saved; and

sending each of the one or more new voice buffers to one or more client computers;

wherein said transmitting step occurs whenever said monitoring step detects a period of silence or whenever the frame buffer is full.

7. The method of claim 6 , wherein said transmitting is performed using a separate listening thread for each of the client computers.

8. The method of claim 7 , wherein the data structure is a circular list having a predetermined size.

9. The method of claim 7 , wherein said sending is performed via an open HTTP connection to each of the client computers.

10. The method of claim 7 , wherein said saving and transmitting are performed by a server, the method comprising transferring the voice buffer from the presenting computer to the server.

11. The method of claim 7 , wherein said creating, saving, and transmitting are performed by a server, the method comprising transferring the frame buffer from the presenting computer to the server.

12. The method of claim 9 , wherein said saving and transmitting are performed by a server, the method comprising transferring the voice buffer from the presenting computer to the server.

13. The method of claim 9 , wherein said creating, saving, and transmitting are performed by a server, the method comprising transferring the frame buffer from the presenting computer to the server.

14. The method of claim 1 , wherein said storing comprises at least one of:

maintaining a small portion of audio data associated with the periods of silence just before the periods of sound;

first-recording said small portion of audio data along with, and preceding, the audio data associated with the periods of sound, in a frame buffer having a predetermined size; and

second-recording a small portion of audio data associated with periods of silence that occur after the audio data associated with the periods of sound, at the end of said frame buffer.

15. The method of claim 14 , wherein the transmitting occurs whenever said monitoring detects a period of silence longer than either of said small portions, or whenever said frame buffer is full.

16. The method of claim 15 , comprising creating a voice buffer from the frame buffer before said transmitting.

17. The method of claim 16 , wherein said creating is accomplished by compressing the contents of the frame buffer.

18. The method of claim 17 , comprising saving the voice buffer in a data structure.

19. The method of claim 18 , wherein said transmitting comprises:

observing the data structure to identify when one or more new voice buffers have been saved; and

sending each of the new voice buffers to the client computers.

20. The method of claim 19 , wherein said transmitting is performed by at least one listening thread for each of the client computers.

21. The method of claim 20 , wherein the data structure is a circular list of predetermined size.

22. The method of claim 20 , wherein said sending is performed via an open HTTP connection to each of the client computers.

23. The method of claim 20 , wherein said saving and transmitting are performed by a server, the method comprising transferring the voice buffer from the presenting computer to the server.

24. The method of claim 20 , wherein said creating, saving, and transmitting are performed by a server, the method comprising transferring the frame buffer from the presenting computer to the server.

25. The method of claim 22 , wherein said saving and transmitting are performed by a server, the method comprising transferring the voice buffer from the presenting computer to the server.

26. The method of claim 22 , wherein said creating, saving, and transmitting are performed by a server, the method comprising transferring the frame buffer from the presenting computer to the server.

Assignments (4)
RELEASE OF SECURITY INTEREST Recorded Dec 20, 2022
From: WELLS FARGO BANK, NATIONAL ASSOCIATION
To: INTERCALL, INC.; INTRADO INC.; TELEVOX SOFTWARE, INCORPORATED; TWENTY FIRST CENTURY COMMUNICATIONS, INC.; WEST BUSINESS SOLUTIONS, LLC; WEST DIRECT, LLC; WEST INTERACTIVE CORPORATION
Reel/Frame 062160/0359 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 26, 2013
From: CONTIGO SOFTWARE, LLC
To: CONTIGO SOFTWARE, INC.
Reel/Frame 030883/0677 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 26, 2013
From: CONTIGO SOFTWARE, INC.
To: RAINDANCE COMMUNICATIONS, INC.
Reel/Frame 030883/0757 →
SECURITY AGREEMENT Recorded Jun 18, 2012
From: INTERCALL, INC., A DELAWARE CORPORATION; INTRADO INC., A DELAWARE CORPORATION; TELEVOX SOFTWARE, INCORPORATED, A DELAWARE CORPORATION; TWENTY FIRST CENTURY COMMUNICATIONS, INC., AN OHIO CORPORATION; WEST BUSINESS SOLUTIONS, LLC, A DELAWARE LIMITED LIABILITY COMPANY; WEST DIRECT, LLC, A DELAWARE LIMITED LIABILITY COMPANY; WEST INTERACTIVE CORPORATION, A DELAWARE CORPORATION
To: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS ADMINISTRATIVE AGENT
Reel/Frame 028397/0305 →