leverateai:从命令行有效的散装转录
#python #speechtotext #transcription #contactcenters

在当今数据驱动的世界中,企业必须利用audio transcriptions来增强他们对客户体验(CX)的理解并优化互动。由NICE's award-winning AI提供动力的Leverateai简化了批量音频转录并提供有价值的CX Insights。

在此博客中,我们将探讨如何上传多个音频文件并从命令行执行批量转录,从而指导您浏览示例Python脚本的每个步骤,这些脚本的每个步骤都可以使用leverateai api有效地自动化该过程。从其GitHub repository访问代码以易于参考。

在GitHub存储库中,您会找到一个suppotuleâtiveaipython sdk,其中包括leverateai.py文件与leverateai api接口。那么,转录涉及哪些高级步骤?有三个:告知您要转录音频文件,上传文件并下载转录和CX Insights一旦完成任务,就需要转录Audio文件。 leveraudiointeraction,uploadinteraction,getPunctuttranscript(或getWordByWordTranScription)和getairesults中的函数。

要进一步分解,该示例将解析命令行参数以获取音频文件列表和配置文件的路径。

  • 检查配置文件和音频文件是否存在并加载配置数据。
  • 上传每个音频文件并存储交互状态。
  • 在实时更新的表中显示每个文件的交互状态。

现在,让我们研究代码并检查功能。

步骤1.设置

导入必要的库和模块

首先,我们需要导入Everateai Python SDK和rich,这是一个用于在终端中创建桌子的库。

import sys
import os
import json
import time
import argparse
from ElevateAIPythonSDK import ElevateAI
from rich.live import Live
from rich.table import Table

步骤2.检查状态

检查并更新每个上传文件的状态

在这里,我们正在列出上传文件标识符的列表并使用API​​检查其状态。

def update_results(upload_results, config):
    updated_results = []
    for row in upload_results:
        response = ElevateAI.GetInteractionStatus(row[1], config["api_token"])
        response_json = response.json()
        new_row = (row[0], row[1], response_json["status"])
        updated_results.append(new_row)
    return updated_results

步骤3.显示状态

创建一个表,使用Rich Library

显示每个音频文件的交互状态

对于此测试,我们只想打印出上传的文件的名称,其每个唯一标识符和当前状态。

def generate_table(results) -> Table:
    table = Table()
    table.add_column("Filename")
    table.add_column("Identifier")
    table.add_column("Status")

    for row in results:
        table.add_row(row[0], row[1], row[2])

    return table

步骤4. Process&返回

处理命令行参数,并返回音频文件列表和配置文件的路径

要上传的文件作为参数传递。我们可以传递到上传的文件数量没有限制。

def process_args(args):
    parser = argparse.ArgumentParser(description='Upload audio files to ElevateAI.')
    parser.add_argument('-f', '--files', nargs='+', help='Audio files to upload')
    parser.add_argument('-c', '--config', default='config.json', help='Path to config.json file')
    arguments = parser.parse_args(args)

    if arguments.files is None:
        parser.print_help()
        sys.exit(0)

    return arguments.files, arguments.config

步骤5.加载配置

检查配置文件和音频文件是否存在,并加载配置

尝试进行任何实际工作之前,请确保我们有一个配置文件,并且传递的文件列表确实存在。

def check_files(config_file, audio_files):
    if not os.path.isfile(config_file):
        print(f"Config file '{config_file}' not found. A config.json file is required.")
        sys.exit(1)

    if not all(os.path.isfile(file) for file in audio_files):
        print("One or more audio files do not exist. Please check the file paths and try again.")
        sys.exit(1)

    with open(config_file) as f:
        config = json.load(f)

    return config

步骤6.上传音频

上传每个音频文件,并将交互状态存储在列表中。

虽然在这里,我们在此处循环循环并按照线性顺序检索其状态,而改进将使用并发和线程。

def upload_files(audio_files, config):
    upload_results = []
    for file in audio_files:
        response = upload_file(file, config)

        if response.status_code == 201:
            upload_results.append((file, response.json()["interactionIdentifier"], "Uploaded Successfully"))
        else:
            upload_results.append((file, response.json()["interactionIdentifier"], "Upload error"))

    return upload_results

步骤7.上传到leverateai

上传单个音频文件,并返回dectareAudioInteraction()呼叫的响应。

这是我们从事大部分工作的地方。每个文件都被宣布为leverateai并上传。

def upload_file(file_path, config):
    token = config['api_token']
    language_tag = "en-us"
    version = "default"
    transcription_mode = "highAccuracy"

    file_name = os.path.basename(file_path)

    declare_response = ElevateAI.DeclareAudioInteraction(language_tag, version, None, token, transcription_mode, False)
    declare_json = declare_response.json()
    interaction_id = declare_json["interactionIdentifier"]

    ElevateAI.UploadInteraction(interaction_id, token, file_path, file_name)
    return declare_response

步骤8.实时更新

主要功能将所有功能都放在一起。

我们调用上面的所有适当函数,以检查和加载配置文件,上传音频文件并在表中显示状态,每15秒更新状态。仅显示一张表,并刷新状态,直到用户退出程序。

def main(args):
    try:
        audio_files, config_file = process_args(args)
        config = check_files(config_file, audio_files)
        upload_results = upload_files(audio_files, config)

        with Live(generate_table(upload_results), refresh_per_second=4) as live:
            while True:
                time.sleep(15)
                upload_results = update_results(upload_results, config)
                live.update(generate_table(upload_results))
    except KeyboardInterrupt:
        print("\nGoodbye!")
        sys.exit(0)

从其GitHub repository中获取示例批量转录的副本。

此脚本提供了一种方便的方式,可以通过以下步骤上传多个音频文件到leverteai进行批量转录:

  • 解析命令行参数以获取音频文件列表和配置文件的路径。
  • 检查配置文件和音频文件是否存在并加载配置数据。
  • 上传每个音频文件并存储交互状态。
  • 在实时更新的表中显示交互状态。