Systems and methods for recreating lost or inaudible speech in a conversation
By adding transcription redundancy and using AI/ML to recreate speech that mimics the speaker's voice, the solution addresses issues of lost or inaudible segments in real-time communications, improving audio quality and user experience.
Patent Information
- Application Number
- PCT/CN2024/103533
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- Filing Date
- 2024-07-04
- Publication Date
- 2026-01-08
AI Technical Summary
Audio quality in real-time communications across data networks is compromised by network congestion, latency, bandwidth limitations, failing links, and background noise, leading to lost, corrupted, or inaudible speech segments.
Implementing redundancy in audio streams with transcriptions, using AI/ML to generate replacement audio that mimics the speaker's voice for lost or inaudible segments, and integrating it seamlessly with the original audio.
Enhances audio quality by restoring lost or inaudible speech, ensuring a continuous and distraction-free communication experience without the need for users to read transcripts.
Smart Images

Figure CN2024103533_08012026_PF_FP_ABST
Abstract
Description
SYSTEMS AND METHODS FOR RECREATING LOST OR INAUDIBLE SPEECH IN A CONVERSATIONTECHNICAL FIELD
[0001] The present disclosure relates to the field of telecommunications and audio / video conferencing.BACKGROUND
[0002] Audio quality in a call, conference, or other communication that is routed across a data network is dependent on the data network performance and conditions as well as the quality of the encoded audio when it is recorded or captured. If the network is congested, has high latency, has limited bandwidth, has failing links, or otherwise has degraded performance, then packets encoding the speech or audio for the call, conference, or communication may be lost, corrupted, or delayed. Consequently, real-time playback of the speech or audio on other client devices may drop in and out. Moreover, if a speaker is far away from a microphone or if there is intermittent or irregular background noise, then the speech or audio may become temporarily inaudible even when all packets encoding the speech or audio are successfully transmitted over the network.BRIEF DESCRIPTION OF THE DRAWINGS
[0003] FIG. 1 illustrates an example of recreating lost or inaudible speech in a conference in accordance with some embodiments presented herein.
[0004] FIG. 2 illustrates an example of generating and streaming an audio stream with transcript redundancy in accordance with some embodiments presented herein.
[0005] FIG. 3 presents a process for detecting lost, corrupted, or inaudible speech in a received audio stream in accordance with some embodiments presented herein.
[0006] FIG. 4 illustrates an example optimization for improving audio quality of a received audio stream in accordance with some embodiments presented herein.
[0007] FIG. 5 presents a process for improving audio quality in an audio stream by replacing lost, corrupted, or inaudible segments with recreated audio that simulates the voice characteristics of the speaker in accordance with some embodiments presented herein.
[0008] FIG. 6 illustrates an example of dynamically selecting voice models to recreate lost or inaudible audio for different speakers using the same client device to participate in a conference in accordance with some embodiments presented herein
[0009] DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS
[0010] This disclosure arises from the realization that call or audio quality improvements are needed for real-time communication across data networks with different or changing performance parameters and / or for client devices in different noisy settings with different encoding and noise cancellation capabilities. More specifically, this disclosure arises from the realization that telecommunications and audio / video conferencing solutions may experience quality issues that the end users and service provider have no control over. A congested, high latency, or limited bandwidth network with failing links may result in parts of the encoded audio streams being lost or corrupted during transmission. Similarly, intermittent or irregular background noise with poor noise cancellation may result in parts of the audio stream being inaudible.
[0011] The current disclosure provides a technological solution for a technological problem in the fields of telecommunications and audio and / or video conferencing. The technical solution involves improving audio quality for real-time communications across data networks.
[0012] The technological solution includes adding redundancy to the audio stream that is generated and sent by each client device to a server for redistribution to other client devices participating in the same call, conversation, conference, or other communication. The added redundancy includes generating a transcription of each audio stream to send along with the audio stream to the server. The technological solution further includes adapting the server to reference the transcription in order to detect and correct for lost, corrupted, or inaudible speech in each received audio stream prior to combining and redistributing the received audio streams as a unified mixed stream. The technological solution leverages artificial intelligence and / or machine learning (AI / ML) techniques to generate replacement audio for text in the transcription that corresponds to audio that was lost, corrupted, or inaudible. The AI / ML techniques generate the replacement audio in the voice of the original speaker so that the replacement audio seamlessly integrates with the original or retained audio of the audio stream and does not distract or interfere with the call, conversation, conference, or other communication.
[0013] FIG. 1 illustrates an example of a communication system recreating lost or inaudible speech in a conference in accordance with some embodiments presented herein. The communication system may be part of a telecommunications system or other provider of call, conferencing, and / or other audio / video communication. The communication system may include communication server 100 and different client devices that access communication services from communication server 100. Communication server 100 may be implemented as one or more computing devices or machines with processor, memory, storage, network, and / or other hardware resources for establishing a call, conversation, conference, or other communication between client devices of two or more users over a data network (e.g., the Internet or another packet-switched network) .
[0014] Communication server 100 receives (at 102) an audio stream with a separate transcription of the speech from the audio stream from each client device. The audio stream encodes the audio captured by a microphone of each client device as a set of data packets. The data packets may be encoded using a supporting audio codec and transmitted to communication server 100 using a Voice over Internet Protocol (VoIP) or other communication or streaming protocol. Communication server 100 may also receive (at 102) a video stream with the audio stream when the call, conversation, conference, or other communication includes video or images captured by a client device camera. The transcription may be a text file or text that is stored in the payloads of data packets (e.g., transcript data packets) that are separate from the data packets encoding the audio stream (e.g., audio data packets) . Client devices perform a real-time audio-to-text conversion of any speech captured by the client device microphone. For instance, the speech transcription may be generated at the same time as the recorded audio is encoded to audio data packets for transmission to communication server 100. In some example embodiments, the client device may generate a transcription for a specific time interval (e.g., every second) , and may send the generated transcription for each specific time interval to communication server 100 with the data packets encoding the audio for the same specific time interval. In some example embodiments, the client device may send the transcriptions some time before or after the sending of the corresponding audio data packets to minimize the risk of a network failure preventing communication server 100 from receiving one or more of the audio data packets and the generated transcription.
[0015] Communication server 100 compares (at 104) the transcription to the audio stream received (at 102) from each client device to determine if any part of the encoded audio does not match the words or text of the transcription. In some example embodiments, communication server 100 performs the comparison (at 104) by transcribing the audio encoded to the data packets of the received (at 102) audio stream, and by comparing the communication server 100 generated transcription to the transcription received (at 102) from the client device. In some other example embodiments, communication server 100 performs the comparison (at 104) by inspecting the data packets of the received (at 102) audio stream for lost or corrupted packets, and by determining the words or text from the transcription that are encoded within any lost or corrupted packets. Communication server 100 may detect lost or corrupted packets based on sequence numbers or other values in the packet headers and / or by determining whether checksums provided in the packet headers match the payload or data of the data packets.
[0016] In response to identifying a part from a received (at 102) transcription that is lost, corrupted, or inaudible in the received (at 102) audio stream from the same client device, communication server 100 generates (at 106) audio for the words in the identified part of the transcription with a simulated voice of the speaker or a voice that mimics the speaker's voice characteristics in the other data packets of the received (at 102) audio stream. Communication server 100 may use one or more AI / ML voice cloning techniques to model the speaker voice and to generate the audio for the words in the identified part based on the modeling of the speaker voice.
[0017] Communication server 100 encodes (at 108) the generated audio using the same audio codec and / or communication or streaming protocol format as the other data packets of the audio stream. The encoding (at 108) generates one or more replacement packets.
[0018] Communication server 100 inserts (at 110) the generated replacement packets into the audio stream at the position of the data packets encoding the lost, corrupted, or inaudible speech. For instance, communication server 100 may generate the replacement packets with the sequence number and other header values of any data packets from the audio stream that are lost or corrupted, and may replace the lost or corrupted data packets in the received audio stream with the replacement packets.
[0019] Communication server 100 distributes (at 112) the received (at 102) audio streams modified with the generated replacement packets to the other client devices. In some example embodiments, communication server 100 may first generate a unified audio stream by merging, mixing, or otherwise combining the audio streams that are received (at 102) from the different client devices of the call, conversation, conference, other communication with the audio quality improvement of the inserted replacement packets. Communication server 100 may then distribute (at 112) the unified audio stream to the client devices for playback of the corrected or improved audio on the client devices.
[0020] FIG. 2 illustrates an example of generating and streaming an audio stream with transcript redundancy from client device 200 to communication server 100 in accordance with some embodiments presented herein. Client device 200 joins (at 202) a conference or connects to a call that is hosted by or is routed through communication server 100. Client device 200 may join (at 202) the conference by issuing a request to a Uniform Resource Locator (URL) associated with the conference or by calling a telephone number associated with the conference.
[0021] A user speaks (at 204) into a microphone of client device 200. The microphone records the audio and may process the audio with one or more noise cancellation techniques. The noise cancellation techniques may remove background noises and / or audio from other client devices of the conference that is played back through a speaker of client device 200.
[0022] Client device 200 performs (at 206) a real-time transcription of the speech captured by the microphone. Performing (at 206) the real-time transcription includes generating text for the words spoken (at 204) by the user. In some example embodiments, the conferencing application that client devices 200 use to access services of communication server 100 may include a speech-to-text converter. In any case, the speech-to-text conversion is performed locally on client device 200 based on audio captured by the microphone of client device 200.
[0023] Client device 200 encodes (at 208) the captured audio to a set of audio data packets according to an audio codec and / or streaming protocol that is supported by communication server 100. The encoding (at 208) includes converting the sound waves or frequencies into a digital representation. The encoding (at 208) may involve compression. The compression may reduce the number of bits for representing the captured audio in a digital format.
[0024] Client device 200 alternates between streaming (at 210) the packets encoding a segment of the recorded audio (e.g., a duration of the user speaking (at 204) into the microphone) and sending the text generated from transcribing the audio in the packets streamed (at 210) immediately before the text. The text may be sent in separate or different packets than the packets encoding the audio. In some example embodiments, client device 200 may stream the text before the packets for the corresponding audio segment. In some example embodiments, the text is indirectly associated with the audio in the streamed packets. For instance, a transcript may be generated and sent for every second of audio or every second of the conference that passes. In some other example embodiments, the packets containing the text for a particular duration are directly associated with the packets encoding the audio for the same particular duration. In some such example embodiments, the packets containing the text may include identifiers (e.g., sequence numbers, checksums, etc. ) that indicate which encoded audio packets the text is associated with.
[0025] Communication server 100 determines, in real-time, any lost, corrupted, or inaudible speech in the audio stream that is received from a client device based on a comparison of the packets encoding the audio and the packets containing the transcription of that audio. Communication server 100 may correct the lost, corrupted, or inaudible speech by performing a server-side generation of replacement audio packets to include with the audio stream prior to redistribution of the audio stream to other client devices connected to the same call, conversation, conference, or communication.
[0026] FIG. 3 presents a process 300 for detecting lost, corrupted, or inaudible speech in a received audio stream in accordance with some embodiments presented herein. Process 300 is implemented by communication server 100. Communication server 100 may include one or more devices or machines of a telecommunications, conferencing, or other audio and / or video communications service provider. The devices or machines of communication server 100 include processor, memory, storage, network, and / or other hardware resources for hosting audio and / or video communications between two or more client devices and for improving the audio quality of the communications by detecting and replacing the lost, corrupted, or inaudible speech with machine-generated audio that matches the wording of the lost, corrupted, or inaudible speech in a simulated voice of the speaker speaking the lost, corrupted, or inaudible speech.
[0027] Process 300 includes receiving (at 302) a set of audio data packets that encodes a segment of audio that is recorded and streamed from a particular client device participating in an active call, conversation, conference, or other communication with one or more other client devices. For instance, the segment of audio may be encoded using MP3, WAV, or other audio codecs and / or encoded to the set of audio data packets according to VoIP, HTTP Live Streaming (HLS) , Dynamic Adaptive Streaming over HTTP (DASH) , Real-Time Messaging Protocol (RTMP) , or other streaming protocol formats.
[0028] Process 300 includes receiving (at 304) a transcription for the encoded segment of audio from the particular client device. The transcription is provided in one or more textual data packets that arrive before, after, or intermixed with set of audio data packets. For instance, the payload of the one or more textual data packets may include a plain-text or encoded representation for the words that the particular client device transcribed from the segment of audio captured by the particular client device's microphone or an associated microphone. The one or more textual data packets may also include identifiers that specify the absolute or relative time in the conference at which the transcription was generated or that link the transcription to the segment of audio encoded within the set of audio data packets.
[0029] Process 300 includes transcribing (at 306) the audio that is encoded within the received (at 302) set of audio data packets. In other words, communication server 100 performs its own server-side transcription of the speech encoded in the received (at 302) set of audio data packets. To perform the transcription, communication server 100 may generate an audio snippet by decoding the received (at 302) set of audio data packets (e.g., combining the audio data from each audio data packet into the audio snippet) . Communication server 100 may feed the audio snippet into a speech- to-text converter. The speech-to-text converter performs a linguistic analysis to match frequencies, patterns, and / or sounds from smaller excerpts of the audio snippet to modeled frequencies, patterns, and / or sounds of different words. Accordingly, transcribing (at 306) the audio includes generating text for recognized words spoken in the audio snippet.
[0030] Process 300 includes comparing (at 308) the text from transcribing (at 306) the audio snippet to the text of the transcription received (at 304) from the particular client device. Communication server 100 performs a word-by-word comparison to determine if any words in the transcriptions are mismatched at corresponding positions in the transcriptions. In some example embodiments, the comparison (at 308) may allow for some degree of deviation or for phonetic similarity. For instance, the words “sale” and “sails” are spelled differently but phonetically match by a threshold amount such that communication server 100 considers these words to be a match.
[0031] Process 300 includes detecting (at 310) a segment of text in the received (at 304) transcription from the particular client device that differs by more than a threshold amount from a corresponding segment of the transcription generated by communication server 100 from the received (at 302) set of audio data packets. The detected (at 310) segment may be omitted or missing in the generated transcription which may be indicative that audio data packets for that segment were lost or corrupted (e.g., could not be decoded) during transmission. Additionally, the text for the detected (at 310) segment may be mismatched in the two transcriptions which may be indicative of the speech being muffled or made inaudible by background noises or by a low speaker voice.
[0032] Process 300 includes generating (at 312) audio that recites the detected (at 310) segment of text for the lost, corrupted, or inaudible speech or audio in a simulated voice of the speaker associated with the particular client device and / or the speaker's voice captured in the received (at 302) set of audio data packets. Communication server 100 generates (at 312) the audio by inputting the segment of text into a voice model of the speaker's voice, and the voice model outputs the audio to match the tone, pitch, accent, intonation, and / or other speech characteristics of the speaker's voice.
[0033] Process 300 includes encoding (at 314) the generated (at 312) audio as one or more replacement audio data packets that are in the same format and / or protocol as the received (at 302) set of audio data packets. For instance, communication server 100 may map or copy headers from the set of audio data packets to the headers of the one or more replacement audio data packets so that the set of audio data packets and the replacement audio data packets appear to have been originated sequentially by the particular client device. In some example, encoding (at 314) the generated (at 312) audio includes merging the generated (at 312) audio at the correct time or position within the retained audio that is decoded from the set of audio data packets, and encoding the entire audio represented by the received (at 302) set of audio data packets or the audio for the entire text in the received (at 304) transcription into the one or more replacement audio data packets.
[0034] Process 300 includes embedding (at 316) the one or more replacement audio data packets in the audio stream at a place or amongst the received (at 302) set of audio data packets when the audio for the detected (at 310) segment of text is spoken. Embedding (at 316) the one or more replacement audio data packets may include inserting the one or more replacement audio data packets in between two audio data packets from the received (at 302) set of audio data packets in response to the one or more replacement audio data packets representing audio from data packets in between the two audio data packets that were lost during transmission. Embedding (at 316) the one or more replacement audio data packets may also include replacing one or more audio data packets from the received (at 302) set of audio data packets with corrupted or inaudible audio with the one or more replacement audio data packets.
[0035] The modified set of audio data packets including the embedded one or more replacement audio data packets may then be streamed from communication server 100 to other client devices participating in the same call, conversation, conference, or communication as the particular client device. The one or more replacement audio data packets improve the audio quality of the audio stream by clarifying the lost or inaudible speech at the corresponding time in the audio stream in a seamless and unintrusive manner. Specifically, the speaking voice in the one or more replacement audio data packets mimics or matches the speaking voice of the speaker in the other audio data packets such that there is no noticeable discontinuity or distraction in the conversation. The seamless integration of the replacement audio data packets also saves the other users from having to read a transcript for any lost or inaudible speech which could distract the other users from actively participating in the conversation.
[0036] Communication server 100 may optimize the detection of lost, corrupted, or inaudible speech by detecting the lost, corrupted, or inaudible speech without transcribing all dialogue from all audio streams of the same multi-party communication. Communication server 100 may use alternative techniques to detect where in the audio stream the speech is impacted, and may transcribe only the affected segments of the audio stream to determine the specific words associated with the impacted speech.
[0037] FIG. 4 illustrates an example optimization for improving audio quality of a received audio stream in accordance with some embodiments presented herein. Communication server 100 receives (at 402) a first encoded audio segment and a first transcription for the first encoded audio segment from a particular client device. The first encoded audio segment is a first set of audio data packets that encode the first audio segment from the audio stream generated by the particular client device. The first transcription is one or more other data packets that contain the text for the words or speech spoken by a user of the particular client device during the first encoded audio segment.
[0038] Communication server 100 analyzes (at 404) the headers of the first set of audio data packets for indications of loss or corruption. For instance, each audio data packet in the first set of audio data packets may include a sequence number in the packet header. If the sequence numbers in the received (at 402) first set of audio data packets are not consecutive after accounting for an out-of-order arrival at communication server 100, then communication server 100 may determine that the packets with the missing sequence number were lost during transmission. Communication server 100 may detect a corrupted audio data packet by verifying the audio data packet checksum. For instance, communication server 100 may compute a checksum for each audio data packet based on the data in the packet payload, and may compare the computed checksum to the checksum contained in the packet header. If the checksums for a particular audio data packet are mismatched, communication server 100 determines that the particular audio data packet was corrupted or modified during transmission, and the audio can no longer be reliably decoded from that particular audio data packet. In some example embodiments, communication server 100 may use other techniques to detect lost or corrupted data packets without having to transcribe the audio contained within each of the received (at 402) first set of audio data packets.
[0039] Communication server 100 determines (at 406) that there is no loss or corruption associated with the first encoded audio segment based on the analysis (at 404) of the first set of audio data packet headers. In particular, communication server 100 makes the determination (at 406) without transcribing the audio in any audio data packet of the received (at 402) first set of audio data packets and without comparing the text from a transcript that is generated by communication server 100 to the text from the first transcription received (at 402) with or for the first set of audio data packets. Accordingly, communication server 100 may redistribute (at 408) the first set of audio data packets to the other client devices participating in the same call, conversation, conference, or other communication as the particular client device. The first set of audio data packets may be combined with audio data packets from audio streams that communication server 100 receives from the other client devices for the same time of the call, conversation, conference, or other communication into a unified audio stream, and communication server 100 may distribute the unified audio stream to the client devices rather than each audio stream separately to the non-originating client devices.
[0040] Communication server 100 receives (at 410) a second encoded audio segment and a second transcription for the second encoded audio segment from the particular client device. The second encoded audio segment corresponds to audio from the audio stream generated by the particular client device that is recorded or captured after the audio of the first encoded audio segment. The second encoded audio segment is a second set of audio data packets that encode the second audio segment from the audio stream generated by the particular client device. The second transcription is one or more other data packets that contain the text for the words or speech spoken by the user of the particular client device during the second encoded audio segment. Communication server 100 may receive (at 410) the second encoded audio segment and / or the second transcription at any time while analyzing (at 404) the headers of the first set of audio data packets for indications of loss or corruption, determining (at 406) no loss or corruption with the first encoded audio segment, or redistributing (at 408) the first set of audio data packets.
[0041] Communication server 100 analyzes (at 412) the headers of the second set of audio data packets for indications of loss or corruption. Communication server 100 detects (at 414) one or more lost or corrupted audio packets associated with the received (at 410) second audio segment based on the analysis (at 412) of the sequence numbers, checksums, or other header values of the second set of audio data packets.
[0042] In response to detecting (at 414) the lost or corrupted audio packets, communication server 100 determines (at 416) the words or speech that were lost or corrupted in the second audio segment. In some example embodiments, communication server 100 selectively transcribes the audio from one or more audio data packets in the second set of audio data packets that come before and after the one or more lost or corrupted audio packets. In some other example embodiments, communication server 100 transcribes the second set of audio data packets in response to detecting (at 414) that one or more of the audio data packets were lost or corrupted. Communication server 100 compares the generated transcription to the second transcription to determine (at 416) the words or speech that were lost or corrupted.
[0043] Communication server 100 generates (at 418) audio in a simulated voice of the speaker associated with the particular client device and / or the speaker's voice in the received (at 410) second set of audio data packets that recites the determined (at 416) words or speech that was lost or corrupted. Communication server 100 encodes (at 420) the generated (at 418) audio as one or more replacement audio data packets, and modifies the second encoded audio segment by adding the one or more replacement audio data packets into the second set of audio data packets at positions that correspond to positions of audio data packets encoding the lost or corrupted audio within the second encoded audio segment. Alternatively, communication server 100 may encode (at 420) the generated (at 418) audio with the decoded audio from the second set of audio data packets in order to regenerate the second audio segment without loss or corruption.
[0044] Communication server 100 distributes (at 422) the modified second encoded audio segment to the other client devices. Specifically, communication server 100 distributes (at 422) the uncorrupted second set of audio data packets with the one or more replacement audio data packets in a correct order that replicates the speech of the second transcription in the voice of the original speaker.
[0045] Communication server 100 regenerates the lost, corrupted, or inaudible audio of the received audio streams in the different voices of the associated speakers to improve the quality of the audio streams before they are redistributed to other users and also eliminate distractions throughout the call, conversation, conference, or communication that would otherwise result from the lost, corrupted, or inaudible audio or from other techniques to improve the audio quality. For instance, playing the lost, corrupted, or inaudible audio may cause the listeners to struggle to understand what is being said. Presenting the transcript in conjunction with the lost, corrupted, or inaudible audio may shift the participant focus away from the conversation to reading instead of hearing the dialogue for the lost, corrupted, or inaudible audio. Similarly, generating audio in a generic voice from the text of the lost, corrupted, or inaudible audio may cause the listeners to be confused as to who is speaking and whether the audio is part of a continuous thought or a distinct thought.
[0046] FIG. 5 presents a process 500 for improving audio quality in an audio stream by replacing lost, corrupted, or inaudible segments with recreated audio that simulates the voice characteristics of the speaker in accordance with some embodiments presented herein. Process 500 is implemented by communication server 100. In particular, communication server 100 may execute one or more AI / ML voice cloning techniques to generate the replacement audio that simulates or matches the voices of different speakers.
[0047] Process 500 includes receiving (at 502) an audio stream from each client device that is connected to a common call, conversation, conference, or other communication. As before, receiving (at 502) an audio stream includes receiving a set of audio data packets that encode the speech or audio of a different speaker and the transcript for the encoded speech or audio.
[0048] Process 500 includes generating (at 504) a voice model for each speaker associated with each audio stream based on an analysis of the voice characteristics of each speaker. Communication server 100 may decode a sample set of audio data packets from each stream, and may input the audio into one or more AI / ML voice cloning techniques. The one or more AI / ML voice cloning techniques analyze the voice of each speaker, and determine the speaking frequency, tone, pronunciation, intonation, accent, and / or other voice characteristics of each speaker. For instance, as each speaker introduces themselves to the others in the conference, the AI / ML voice cloning techniques extract and track the different voice characteristics of each speaker. Generating (at 504) the voice model includes mapping the voice characteristics to different vectors from which the audio for different words or sentences may be constructed with the same voice characteristics of the corresponding speaker. A vector may include a connected set of nodes with each node representation how a speaker pronounces, emphasizes, or verbalizes (e.g., pitch, tone, accent, frequency, etc. ) different syllables, letters, letter combinations, phrases, and / or words. Accordingly, traversals of different node combinations may create audio in the voice of the speaker for new words or sentences that were not spoken in the sample set of audio data packets used to train the voice model.
[0049] In some example embodiments, communication server 100 may request that each conference participate speak specific phrases into a microphone prior to joining the conference. The specific phrases may be used to train the voice models, and may include a sample set of words from which other words may be automatically generated.
[0050] Process 500 includes refining (at 506) the voice model that is generated for each speaker according to the sample audio and / or the associated transcript for the sample audio of each speaker. For instance, communication server 100 may enter the words from a first transcription that are spoken by a first speaker into the voice model that was generated (at 504) for the first speaker. Communication server 100 may compare the audio that is generated by the voice model to the audio encoded in the received set of audio data packets for the same words. If the generated audio does not match the audio from the received audio stream by a threshold amount, the AI / ML voice cloning techniques may adjust the modeled voice characteristics and / or vectors of the voice model, regenerate the audio, and determine if the regenerated audio is a closer match to the received audio.
[0051] In some example embodiments, communication server 100 associates each voice model to an identifier of a speaker or the client device of a speaker. In some such example embodiments, communication server 100 may store the voice models with the associated identifiers, may retrieve the previously generated voice model of a particular speaker when the particular speaker joins or participates in a new conference based on the identifier associated with the particular speaker and the previously generated voice model for that particular speaker, and may improve the accuracy of the voice model based on a sampling of additional audio and / or new words spoken by the particular speaker that may be used to adjust the modeled voice characteristics and / or vectors of the voice model.
[0052] Process 500 includes detecting (at 508) audio that is lost, corrupted, or inaudible in a segment of a particular audio stream received (at 502) from a client device associated with a particular speaker. For instance, communication server 100 determines that the words from a transcription generated from the audio data packets received for that segment of the particular audio stream do not match the words from the transcription provided with the particular audio stream by the client device.
[0053] Process 500 includes selecting (at 510) the voice model that was generated (at 504) for the particular speaker. Communication server 100 may use the source Internet Protocol (IP) address from the data packets of the particular audio stream, the client device signature, a username of the particular speaker, or login information used by the particular speaker to join the conference to select (at 510) the voice model for the particular speaker.
[0054] Process 500 includes inputting (at 512) the text for the lost, corrupted, or inaudible audio from the received transcript into the selected (at 510) voice model. Communication server 100 may also input (at 512) a sampling of the audio before and / or after the lost, corrupted, or inaudible audio so that the voice model may generate audio that maintains the current tone, pitch, speaking rate, and / or other voice characteristics of the particular speaker. In other words, the voice model may match the voice characters of the particular speaker speaking with a calm voice. However, in the current audio segment, the particular speaker may be speaking at a faster rate or an elevated speaking voice. Based on sample audio from the current audio, communication server 100 may adjust the voice model or the output of the voice model to match the current voice characteristics of the particular speaker.
[0055] Process 500 includes generating (at 514) simulated audio with the voice characteristics of the particular speaker for the inputted (at 512) text based on modeled voice characteristics of the particular speaker in the selected (at 510) voice model and the current tone, pitch, speaking, and / or other voice characteristics of the particular speaker as sampled from one or more uncorrupted audio packets from the same audio segment. The simulated audio is generated (at 514) as a set of replacement audio data packets that are encoded at the same bitrate with the same audio codec or format as the other audio data packets in the particular audio stream or audio segment received from the client device of the particular speaker.
[0056] Process 500 includes mixing (at 516) the simulated audio with the particular audio stream at the position of the lost, corrupted, or inaudible audio segment. Mixing (at 506) the simulated audio includes removing any audio data packets associated with the lost, corrupted, or inaudible audio from the audio segment, and inserting the set of replacement audio data packets with the remaining audio data packets of the particular audio stream to seamlessly merge the simulated audio with the retained original audio of the particular speaker such that the mixed audio does not deviate from the voice characteristics of the particular speaker and may be transcribed to match the transcription received from the client device of the particular speaker.
[0057] In some instances, communication server 100 receives a single audio stream from a client device that includes different voices of different speakers. For instance, the client device may be located in a conference room and multiple participants may participate in the conference by speaking at different times using that single client device. In some such instances, communication server 100 may perform speaker diarization to differentiate between the different speakers and to select the correct voice model for generating audio when dialogue associated with one of the different speakers is lost, corrupted, or inaudible.
[0058] FIG. 6 illustrates an example of dynamically selecting voice models to recreate lost or inaudible audio for different speakers using the same client device to participate in a conference in accordance with some embodiments presented herein. The client device captures the audio or speech from different speakers speaking at different times or even the same time. The client device encodes the audio as a set of audio data packets, transcribes the speech, and streams (at 602) the set of audio data packets and the generated transcript to communication server 100.
[0059] Communication server 100 analyzes (at 604) the received audio stream to identify any segments of lost, corrupted, or inaudible speech. In analyzing (at 604) the received audio stream, communication server 100 detects the changing voice characteristics of the different speakers, and performs (at 606) speaker diarization to differentiate the audio segments involving different speakers. In some example embodiments, performing (at 606) the speaker diarization includes generating a labeled transcript of the audio. The labeled transcript includes an identifier that identifies the different speaker that is determined to speak the different text in the labeled transcript.
[0060] Communication server 100 generates (at 608) the voice models for the different speakers based on the different voice characteristics within the differentiated audio segments for each speaker. In some example embodiments, communication server 100 retrieves previously generated voice models for the different speakers by matching the voice characteristics from each differentiated set of audio segments to the voice characteristics modeled in a voice model generated for that speaker.
[0061] Communication server 100 detects (at 610) a segment of lost, corrupted, or inaudible audio in the audio stream. Communication server 100 determines (at 612) the speaker that was speaking during the segment of lost, corrupted, or inaudible audio based on the speaker diarization. For instance, communication server 100 determines (at 612) that the voice characteristics detected within that segment or an audio segment immediately preceding the segment of lost, corrupted, or inaudible audio match the voice characteristics that the voice diarization detects for a first speaker. In some example embodiments, communication server 100 may reference the labeled transcript to identify which speaker was speaking during the segment of lost, corrupted, or inaudible audio or the audio segment immediately before that segment.
[0062] Communication server 100 selects (at 614) the voice model that was generated for the identified speaker, and generates (at 616) audio for the transcribed words of the lost, corrupted, or inaudible audio in the simulated voice of the identified speaker using the selected (at 614) voice model. Communication server 100 embeds (at 618) the generated (at 616) audio within the retained audio of the received audio stream at the time or position in the received audio stream of the lost, corrupted, or inaudible audio. In some example embodiments, embedding (at 618) the generated (at 616) audio includes mixing the generated (at 616) with the retained uncorrupted audio from the audio stream to generate a mixed audio stream, and encoding the mixed audio stream as one or more replacement audio data packets. Communication server 100 may stream (at 620) the mixed audio stream in place of the received (at 602) audio stream to other devices connected to the conference.
[0063] In some example embodiments, the speaker diarization may be performed locally by the client devices. The client devices may detect changes in the voice characteristics of the different speakers, and may generate different transcripts for the speech of the detected speakers or may label a single transcript with identifiers that identify when the different speakers begin and / or end speaking. Additionally, the client devices may generate different audio streams to send to communication server 100 whenever the detected speaker changes. Each audio stream may include metadata or an identifier that identifies which speaker is speaking in that audio stream. The client device execution of the speaker diarization may shift some of the processing overhead associated with the audio quality improvements from communication server 100 to the client devices.
[0064] The embodiments presented above are not limiting, as elements in such embodiments may vary. It should likewise be understood that a particular embodiment described and / or illustrated herein has elements which may be readily separated from the particular embodiment and optionally combined with any of several other embodiments or substituted for elements in any of several other embodiments described herein.
[0065] It should also be understood that the terminology used herein is for the purpose of describing concepts, and the terminology is not intended to be limiting. Unless defined otherwise, all technical and scientific terms used herein have the same meaning as commonly understood by those skilled in the art to which the embodiment pertains.
[0066] Unless indicated otherwise, ordinal numbers (e.g., first, second, third, etc. ) are used to distinguish or identify different elements or steps in a group of elements or steps, and do not supply a serial or numerical limitation on the elements or steps of the embodiments thereof. For example, “first, ” “second, ” and “third” elements or steps need not necessarily appear in that order, and the embodiments thereof need not necessarily be limited to three elements or steps. It should also be understood that the singular forms of “a, ” “an, ” and “the” include plural references unless the context clearly dictates otherwise.
[0067] Some portions of the above descriptions are presented in terms of procedures, methods, flows, logic blocks, processing, and other symbolic representations of operations performed on a computing device or a server. These descriptions are the means used by those skilled in the arts to most effectively convey the substance of their work to others skilled in the art. In the present application, a procedure, logic block, process, or the like, is conceived to be a self-consistent sequence of operations or steps or instructions leading to a desired result. The operations or steps are those utilizing physical manipulations of physical quantities. Usually, although not necessarily, these quantities take the form of electrical, optical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated in a computer system or computing device or a processor. These signals are sometimes referred to as transactions, bits, values, elements, symbols, characters, samples, pixels, or the like.
[0068] It should be borne in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless specifically stated otherwise as apparent from the following discussions, it is appreciated that throughout the present disclosure, discussions utilizing terms such as “storing, ” “determining, ” “sending, ” “receiving, ” “generating, ” “creating, ” “fetching, ” “transmitting, ” “facilitating, ” “providing, ” “forming, ” “detecting, ” “processing, ” “updating, ” “instantiating, ” “identifying” , “contacting” , “gathering” , “accessing” , “utilizing” , “resolving” , “applying” , “displaying” , “requesting” , “monitoring” , “changing” , “updating” , “establishing” , “initiating” , or the like, refer to actions and processes of a computer system or similar electronic computing device or processor. The computer system or similar electronic computing device manipulates and transforms data represented as physical (electronic) quantities within the computer system memories, registers or other such information storage, transmission or display devices.
[0069] A “computer” is one or more physical computers, virtual computers, and / or computing devices. As an example, a computer can be one or more server computers, cloud-based computers, cloud-based cluster of computers, virtual machine instances or virtual machine computing elements such as virtual processors, storage and memory, data centers, storage devices, desktop computers, laptop computers, mobile devices, Internet of Things ( “IoT” ) devices such as home appliances, physical devices, vehicles, and industrial equipment, computer network devices such as gateways, modems, routers, access points, switches, hubs, firewalls, and / or any other special-purpose computing devices. Any reference to “acomputer” herein means one or more computers, unless expressly stated otherwise.
[0070] The “instructions” are executable instructions and comprise one or more executable files or programs that have been compiled or otherwise built based upon source code prepared in JAVA, C++, OBJECTIVE-C or any other suitable programming environment.
[0071] Communication media can embody computer-executable instructions, data structures, program modules, or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media can include wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, radio frequency (RF) , infrared and other wireless media. Combinations of any of the above can also be included within the scope of computer-readable storage media.
[0072] Computer storage media can include volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer-readable instructions, data structures, program modules, or other data. Computer storage media can include, but is not limited to, random access memory ( “RAM” ) , read only memory ( “ROM” ) , electrically erasable programmable ROM ( “EEPROM” ) , flash memory, or other memory technology, compact disk ROM ( “CD-ROM” ) , digital versatile disks ( “DVDs” ) or other optical storage, solid state drives, hard drives, hybrid drive, or any other medium that can be used to store the desired information and that can be accessed to retrieve that information.
[0073] It is appreciated that the presented systems and methods can be implemented in a variety of architectures and configurations. For example, the systems and methods can be implemented as part of a distributed computing environment, a cloud computing environment, a client server environment, hard drive, etc. Example embodiments described herein may be discussed in the general context of computer-executable instructions residing on some form of computer-readable storage medium, such as program modules, executed by one or more computers, computing devices, or other devices. By way of example, and not limitation, computer-readable storage media may comprise computer storage media and communication media. Generally, program modules include routines, programs, objects, components, data structures, etc., that perform particular tasks or implement particular data types. The functionality of the program modules may be combined or distributed as desired in various embodiments.
[0074] It should be understood, that terms “user” and “participant” have equal meaning in the following description.
Claims
1.A computer-implemented method for recreating lost or inaudible speech, the computer-implemented method comprising:receiving an audio stream from a first client device in an active communication with at least a second client device, the audio stream comprising a plurality of audio data packets that encode speech of a user associated with the first client device over a first duration of the active communication;receiving a first transcription from the first client device, the first transcription comprising a plurality of words that are transcribed from the speech over the first duration;determining a segment of the audio stream that is lost, corrupted, or inaudible;determining a set of words from the plurality of words in the first transcription that are spoken during the segment of the audio stream that is lost, corrupted, or inaudible;generating replacement audio that recites the set of words with simulated voice characteristics of the user; anddistributing a modified audio stream to the second client device, the modified audio stream comprising the audio stream received from the first client device with the replacement audio replacing the segment of the audio stream that is lost, corrupted, or inaudible.2.The computer-implemented method of claim 1, further comprising:transcribing the speech of the user that is encoded in the plurality of audio data packets;comparing text resulting from said transcribing to text of the first transcription; andwherein determining the segment of the audio stream that is lost, corrupted, or inaudible comprises:detecting a mismatch between a portion of the text from the first transcription and the text resulting from said transcribing.3.The computer-implemented method of claim 1, further comprising:analyzing headers of the plurality of audio data packets;determining at least one sequence number that is missing the headers of the plurality of audio data packets; andwherein determining the segment of the audio stream that is lost, corrupted, or inaudible comprises:identifying an audio data packet that is lost during transmission with the at least one sequence number.4.The computer-implemented method of claim 1, further comprising:analyzing checksums of the plurality of audio data packets; andwherein determining the segment of the audio stream that is lost, corrupted, or inaudible comprises:detecting a corrupted audio data packet in the plurality of audio data packets based on a checksum of the corrupted audio data packet not matching a checksum that is computed based on a payload of the corrupted audio data packet.5.The computer-implemented method of claim 1, further comprising:determining an identifier that is associated with one or more of the user or the first client device;selecting a particular voice model from a plurality of voice models that are generated to simulate voice characteristics of a plurality of different users based on the identifier; andwherein generating the replacement audio comprises:providing the set of words as an input to the particular voice model.6.The computer-implemented method of claim 5, wherein generating the replacement audio further comprises:providing audio from the audio stream that precedes the segment of the audio stream that is lost, corrupted, or inaudible as a sample of current voice characteristics of the user.7.The computer-implemented method of claim 1, further comprising:analyzing voice characteristics of the user based on decoded audio from a portion of the audio stream;training a voice model based on the voice characteristics of the user; andwherein generating the replacement audio comprises:recreating a voice of the user based on an output that is generated by the voice model for an input comprising the set of words.8.The computer-implemented method of claim 1, further comprising:receiving a second plurality of audio data packets that encode speech of the user over a second duration of the active communication;receiving a second transcription from the first client device comprising a second plurality of words that are transcribed from the speech over the second duration;determining that the speech encoded to the second plurality of audio data packets is not lost, corrupted, or inaudible; anddistributing the second plurality of audio data packets to the second client device without modification in response to determining that the speech encoded to the second plurality of audio data packets is not lost, corrupted, or inaudible.9.The computer-implemented method of claim 1, further comprising:encoding the replacement audio as one or more replacement audio data packets; andgenerating the modified audio stream by replacing one or more audio data packets from the plurality of audio data packets encoding the segment of the audio stream that is lost, corrupted, or inaudible with the one or more replacement audio data packets.10.The computer-implemented method of claim 1, further comprising:encoding the replacement audio as one or more replacement audio data packets;determining a position within the plurality of audio data packets of lost or corrupted audio data packets; andgenerating the modified audio stream by inserting the one or more replacement audio data packets within the plurality of audio data packets at the position of the lost or corrupted audio data packets.11.The computer-implemented method of claim 1, wherein generating the replacement audio comprises:encoding the replacement audio at a same bitrate and a same codec with which the plurality of audio data packets are encoded by the first client device.12.The computer-implemented method of claim 1, wherein generating the replacement audio comprises:encoding the replacement audio as one or more replacement audio data packets; anddefining headers of the one or more replacement audio data packets with values derived from values defined in headers of one or more of the plurality of audio data packets.13.A system for recreating lost or inaudible speech, the system comprising:one or more hardware processors configured to:receive an audio stream from a first client device in an active communication with at least a second client device, the audio stream comprising a plurality of audio data packets that encode speech of a user associated with the first client device over a first duration of the active communication;receive a first transcription from the first client device, the first transcription comprising a plurality of words that are transcribed from the speech over the first duration;determine a segment of the audio stream that is lost, corrupted, or inaudible;determine a set of words from the plurality of words in the first transcription that are spoken during the segment of the audio stream that is lost, corrupted, or inaudible;generate replacement audio that recites the set of words with simulated voice characteristics of the user; anddistribute a modified audio stream to the second client device, the modified audio stream comprising the audio stream received from the first client device with the replacement audio replacing the segment of the audio stream that is lost, corrupted, or inaudible.14.The system of claim 13, wherein the one or more hardware processors are further configured to:transcribe the speech of the user that is encoded in the plurality of audio data packets;compare text resulting from said transcribing to text of the first transcription; andwherein determining the segment of the audio stream that is lost, corrupted, or inaudible comprises:detecting a mismatch between a portion of the text from the first transcription and the text resulting from said transcribing.15.The system of claim 13, wherein the one or more hardware processors are further configured to:analyze headers of the plurality of audio data packets;determine at least one sequence number that is missing the headers of the plurality of audio data packets; andwherein determining the segment of the audio stream that is lost, corrupted, or inaudible comprises:identifying an audio data packet that is lost during transmission with the at least one sequence number.16.The system of claim 13, wherein the one or more hardware processors are further configured to:analyze checksums of the plurality of audio data packets; andwherein determining the segment of the audio stream that is lost, corrupted, or inaudible comprises:detecting a corrupted audio data packet in the plurality of audio data packets based on a checksum of the corrupted audio data packet not matching a checksum that is computed based on a payload of the corrupted audio data packet.17.The system of claim 13, wherein the one or more hardware processors are further configured to:determine an identifier that is associated with one or more of the user or the first client device;select a particular voice model from a plurality of voice models that are generated to simulate voice characteristics of a plurality of different users based on the identifier; andwherein generating the replacement audio comprises:providing the set of words as an input to the particular voice model.18.The system of claim 17, wherein generating the replacement audio further comprises:providing audio from the audio stream that precedes the segment of the audio stream that is lost, corrupted, or inaudible as a sample of current voice characteristics of the user.19.The system of claim 13, wherein the one or more hardware processors are further configured to:analyze voice characteristics of the user based on decoded audio from a portion of the audio stream;train a voice model based on the voice characteristics of the user; andwherein generating the replacement audio comprises:recreating a voice of the user based on an output that is generated by the voice model for an input comprising the set of words.20.A non-transitory computer-readable medium storing program instructions that, when executed by one or more hardware processors of communication system, cause the communication system to perform operations comprising:receiving an audio stream from a first client device in an active communication with at least a second client device, the audio stream comprising a plurality of audio data packets that encode speech of a user associated with the first client device over a first duration of the active communication;receiving a first transcription from the first client device, the first transcription comprising a plurality of words that are transcribed from the speech over the first duration;determining a segment of the audio stream that is lost, corrupted, or inaudible;determining a set of words from the plurality of words in the first transcription that are spoken during the segment of the audio stream that is lost, corrupted, or inaudible;generating replacement audio that recites the set of words with simulated voice characteristics of the user; anddistributing a modified audio stream to the second client device, the modified audio stream comprising the audio stream received from the first client device with the replacement audio replacing the segment of the audio stream that is lost, corrupted, or inaudible.
Citation Information
Patent Citations
Input speech restoring method and device
CN105469801A
Voice signal repairing method and mobile terminal
CN107393544A
Voice transmitting method, device and computer readable storage medium
CN109616128A
Voice processing method and related equipment
CN110913073A
Call method and device
CN112422747A