Skip to main content

EternalBlue is a project for audio diarization and transcription. It separates speakers in a .wav audio file and returns the diarized and transcribed audio.

Description

EternalBlue is a powerful tool for audio analysis, capable of identifying and separating different speakers in a .wav audio file. Additionally, it performs complete transcription of the spoken content, facilitating the analysis and interpretation of conversations.

Installation

Requirements

  • Python 3.8 or higher

Installation Steps

You can install EternalBlue via pip:

pip install eternalblue

Usage

from eternalblue import EternalBlue
eternal_blue = EternalBlue('', 'portuguese')
eternalresponse = eternal_blue.diarize(audio, 2)

Here’s an example of how to use the EternalBlue class in a Flask application:

from eternalblue import EternalBlue

@app.route('/diarization', methods=['POST'])
def diarization():
    try:
        eternalresponse = {}
        if 'audio' in request.files:
            audio_file = request.files['audio']
            if audio_file.filename != '':
                save_path = os.path.join(AUDIO_PATH, audio_file.filename)
                audio_file.save(save_path)
                eternal_blue = EternalBlue('', 'portuguese')
                eternalresponse = eternal_blue.diarize(save_path, 2)
        return eternalresponse, 200
    except Exception as e:
        print(f"Error: {e}")
        return str(e), 500

For empty trash in failed jobs

from eternalblue import EternalBlue
EternalBlue.clear_cache()

Description

The EternalBlue class requires a Hugging Face API key, the language, and optionally the Whisper model in its constructor. The diarize method expects the path to the .wav audio file and the number of speakers.

Constructor Parameters

  • api_key: The Hugging Face API key as a string.

  • language: The language of the audio as a string.

  • whisper_model (optional): The Whisper model to use.

Method diarize

  • audio_file_path: The path to the .wav audio file as a string.

  • num_speakers: The number of speakers as an integer.

Expected Return

The diarize method returns a list of dictionaries containing metadata and transcriptions, formatted as follows:

[
    {
        "metadata": [
            {
                "audioname": "tester.wav",
                "time_type": "seconds"
            }
        ]
    },
    {
        "end": 5.984999999999999,
        "speaker_id": "SPEAKER_01",
        "start": 1.299,
        "text": " Is your name Bento Ferreira, then? Are you Brazilian? Yes, sir."
    },
    {
        "end": 5.934,
        "speaker_id": "SPEAKER_00",
        "start": 5.323,
        "text": " Yes, sir."
    },
    {
        "end": 8.498,
        "speaker_id": "SPEAKER_01",
        "start": 6.851,
        "text": " military police officer, That's it ?."
    },
    {
        "end": 13.829,
        "speaker_id": "SPEAKER_00",
        "start": 9.856,
        "text": " Thank God, after 35 years in the reserve."
    },
    {
        "end": 16.613,
        "speaker_id": "SPEAKER_00",
        "start": 15.645,
        "text": " Mr. Miguel. Miguel! "
    },
    {
        "end": 19.618000000000002,
        "speaker_id": "SPEAKER_00",
        "start": 16.969,
        "text": " Any relation to  James ?"
    },

]

This JSON structure contains the following information for each segment: - metadata: General information about the audio file. - speaker_id: The identifier for the speaker. - start: The start time of the speech segment in seconds. - end: The end time of the speech segment in seconds. - text: The transcribed text of the speech segment.

Metadata

Release files for eternalblue 1.3.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for eternalblue 1.3.1
File Size Uploaded
eternalblue-1.3.1.tar.gz 6.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for eternalblue 1.3.1
File Interpreter ABI Platform
eternalblue-1.3.1-py3-none-any.whl Python 3 none any Details

Total release size: 14.0 kB

Release files / eternalblue-1.3.1.tar.gz

Download URL eternalblue-1.3.1.tar.gz
Size 6.7 kB
Tags Source
SHA-256 checksum
How to use checksums
4714f823aeabbb195cab4853c8258a340b6503eb1e991227c45c7735c9193fef
BLAKE2b-256 checksum
How to use checksums
45bcc5cb58d618a927bde37235a65313f2fe625493b6332818f19727360a6318
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.10.12

Release files / eternalblue-1.3.1-py3-none-any.whl

Download URL eternalblue-1.3.1-py3-none-any.whl
Size 7.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
96009766c9f185967a5f6276cb717e8364f6a0545576dc53336accaa9098e54a
BLAKE2b-256 checksum
How to use checksums
1669d46fa9af545a76483f6e0629b9933b88bd7da77be1bf2010467da3919a22
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.10.12

Release history Release notifications | RSS feed

This release

1.3.1 This release

2 release files

1.2.1

2 release files

1.1.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page