如何使用Python对实时音频流实现实时情感分析?

问题描述 投票:0回答:2

我目前正在开发一个项目,需要使用 Python 对实时音频流进行实时情感分析。目标是分析口语中表达的情绪并实时提供见解。我做了一些研究并找到了有关基于文本的情感分析的资源,但我不确定如何使这些技术适应音频流。

背景和努力:

研究:我研究了各种用于情感分析的库和工具,例如 NLTK 和 spaCy 等自然语言处理 (NLP) 库。然而,我发现大多数资源都集中在文本数据而不是音频。

音频处理:我熟悉Python中用于音频录制和处理的pyaudio和soundfile等库。我已经使用这些库成功捕获了实时音频流。

文本到语音转换:我尝试使用 SpeechRecognition 等库将音频流中的口语单词转换为文本,以准备用于情感分析的数据。

挑战:

情感分析:我的主要挑战是将情感分析技术应用于音频数据。我不确定传统的基于文本的情感分析模型是否可以直接应用于音频,或者是否有针对这种场景的特定方法。

实时处理:我也关心分析的实时方面。如何确保情绪分析执行得足够快,以提供实时见解,而不会造成严重延迟?

问题:

我正在寻求有关使用 Python 对实时音频流实施实时情绪分析的最佳方法的指导。是否有我应该注意的基于音频的情感分析的专门库或技术?如何有效处理音频数据并实时进行情感分析?任何见解、代码示例或推荐资源将不胜感激。

python speech-recognition real-time sentiment-analysis audio-processing
2个回答
1
投票

使用较小的 Whisper 模型(用于实时性能)并通过 HuggingFace 的情感分析管道提供语音到文本输出,如下所示:

import whisper
from transformers import pipeline

model = whisper.load_model("small")
stt_result = model.transcribe("audio.mp3")

sentiment_pipeline = pipeline("sentiment-analysis")
data = [stt_result]
sentiment_pipeline(data)

会达到您想要的结果:

[{'label': 'POSITIVE', 'score': 0.995}]

尽管您应该记住,在此示例中,Whisper 不接受数据流,而是接受文件。您应该像这样编排流:

  1. 保存传入的音频数据。
  2. 转录您保存的音频文件的最后 5 秒(越多越好)。
  3. 如果存在重叠,请选择最近片段的转录。
  4. 重复步骤1-3。

最后一点;这个 GitHub 项目 用于转录(并处理编排)音频流。在您的情况下,添加提到的情绪分析管道会容易得多。


0
投票

我通过以下步骤在这里找到的解决方案:

  • 添加中间件以从视频中制作文本
  • 对每个完整句子运行情感分析(按照@doneforaiur的建议使用Whisper)

所以,这里的延迟取决于句子单词的长度。这是获得完整上下文分析的权衡。分块并不能反映整个句子,因此不能反映完整的上下文。

有一种可能的方法可以扩展此功能,即向分析系统添加多个句子提要以获得更深入的上下文。我正在考虑。有时,我们用多个句子来描述一个场景。

谢谢,@doneforaiur为我指明了正确的方向。

© www.soinside.com 2019 - 2024. All rights reserved.