Skip to content

Assemblyai

AssemblyAIAudioTranscriptReader #

Bases: BaseReader

用于AssemblyAI音频转录的阅读器。

它使用AssemblyAI API来转录音频文件,并将转录的文本加载到一个或多个文档中,具体取决于指定的格式。

要使用该功能,您应该已安装assemblyai python包,并且设置了环境变量ASSEMBLYAI_API_KEY为您的API密钥。 或者,API密钥也可以作为参数传递。

音频文件可以通过URL或本地文件路径指定。

Source code in llama_index/readers/assemblyai/base.py
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
class AssemblyAIAudioTranscriptReader(BaseReader):
    """用于AssemblyAI音频转录的阅读器。

    它使用AssemblyAI API来转录音频文件,并将转录的文本加载到一个或多个文档中,具体取决于指定的格式。

    要使用该功能,您应该已安装``assemblyai`` python包,并且设置了环境变量``ASSEMBLYAI_API_KEY``为您的API密钥。
    或者,API密钥也可以作为参数传递。

    音频文件可以通过URL或本地文件路径指定。
    """

    def __init__(
        self,
        file_path: str,
        *,
        transcript_format: TranscriptFormat = TranscriptFormat.TEXT,
        config: Optional[assemblyai.TranscriptionConfig] = None,
        api_key: Optional[str] = None,
    ):
        """初始化AssemblyAI AudioTranscriptReader。

Args:
    file_path: URL或本地文件路径。
    transcript_format: 要使用的转录格式。
        有关更多信息,请参见类“TranscriptFormat”。
    config: 转录选项和功能。如果给定“None”,
        将使用Transcriber的默认配置。
    api_key: AssemblyAI API密钥。
"""
        if api_key is not None:
            assemblyai.settings.api_key = api_key

        self.file_path = file_path
        self.transcript_format = transcript_format

        # Instantiating the Transcriber will raise a ValueError if no API key is set.
        self.transcriber = assemblyai.Transcriber(config=config)

    def load_data(self) -> List[Document]:
        """将音频文件转录并加载转录内容到文档中。

它使用AssemblyAI API来转录音频文件,并在转录完成前阻塞。
"""
        transcript = self.transcriber.transcribe(self.file_path)

        if transcript.error:
            raise ValueError(f"Could not transcribe file: {transcript.error}")

        if self.transcript_format == TranscriptFormat.TEXT:
            return [Document(text=transcript.text, metadata=transcript.json_response)]
        elif self.transcript_format == TranscriptFormat.SENTENCES:
            sentences = transcript.get_sentences()
            return [
                Document(text=s.text, metadata=s.dict(exclude={"text"}))
                for s in sentences
            ]
        elif self.transcript_format == TranscriptFormat.PARAGRAPHS:
            paragraphs = transcript.get_paragraphs()
            return [
                Document(text=p.text, metadata=p.dict(exclude={"text"}))
                for p in paragraphs
            ]
        elif self.transcript_format == TranscriptFormat.SUBTITLES_SRT:
            return [Document(text=transcript.export_subtitles_srt())]
        elif self.transcript_format == TranscriptFormat.SUBTITLES_VTT:
            return [Document(text=transcript.export_subtitles_vtt())]
        else:
            raise ValueError("Unknown transcript format.")

load_data #

load_data() -> List[Document]

将音频文件转录并加载转录内容到文档中。

它使用AssemblyAI API来转录音频文件,并在转录完成前阻塞。

Source code in llama_index/readers/assemblyai/base.py
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
    def load_data(self) -> List[Document]:
        """将音频文件转录并加载转录内容到文档中。

它使用AssemblyAI API来转录音频文件,并在转录完成前阻塞。
"""
        transcript = self.transcriber.transcribe(self.file_path)

        if transcript.error:
            raise ValueError(f"Could not transcribe file: {transcript.error}")

        if self.transcript_format == TranscriptFormat.TEXT:
            return [Document(text=transcript.text, metadata=transcript.json_response)]
        elif self.transcript_format == TranscriptFormat.SENTENCES:
            sentences = transcript.get_sentences()
            return [
                Document(text=s.text, metadata=s.dict(exclude={"text"}))
                for s in sentences
            ]
        elif self.transcript_format == TranscriptFormat.PARAGRAPHS:
            paragraphs = transcript.get_paragraphs()
            return [
                Document(text=p.text, metadata=p.dict(exclude={"text"}))
                for p in paragraphs
            ]
        elif self.transcript_format == TranscriptFormat.SUBTITLES_SRT:
            return [Document(text=transcript.export_subtitles_srt())]
        elif self.transcript_format == TranscriptFormat.SUBTITLES_VTT:
            return [Document(text=transcript.export_subtitles_vtt())]
        else:
            raise ValueError("Unknown transcript format.")