我正在开发面试情绪分析代码,其中我需要将录制的面试文件(mp3)转换为文本,并且从文本数据中我需要找到候选人的情绪。
但问题是,当我使用 IBM watson 语音转文本 API 将 mp3 文件转换为文本时,它显示了面试官和受访者的文本数据。
那么,如何查找文件中不同的人数呢?以及如何查找特定受访者的文本数据?
我写了这段代码,请帮助我
import json
from os.path import join, dirname
from ibm_watson import SpeechToTextV1
from ibm_watson.websocket import RecognizeCallback, AudioSource
from ibm_cloud_sdk_core.authenticators import IAMAuthenticator
authenticator = IAMAuthenticator('api key')
speech_to_text = SpeechToTextV1(
authenticator=authenticator
)
speech_to_text.set_service_url('url')
class MyRecognizeCallback(RecognizeCallback):
def __init__(self):
RecognizeCallback.__init__(self)
def on_data(self, data):
print(json.dumps(data, indent=2))
def on_error(self, error):
print('Error received: {}'.format(error))
def on_inactivity_timeout(self, error):
print('Inactivity timeout: {}'.format(error))
myRecognizeCallback = MyRecognizeCallback()
with open(join(dirname(__file__), './.', 'sample_2.mp3'),'rb') as audio_file:
audio_source = AudioSource(audio_file)
speech_to_text.recognize_using_websocket(audio=audio_source,content_type='audio/mp3',recognize_callback=myRecognizeCallback,model='en-US_BroadbandModel',max_alternatives=1)
要获取发言者的数量,我相信您应该首先将
speaker_labels
参数设置为 True。您应该解析响应并使用 speaker_labels
键对不同的发言者进行计数,例如使用 set
以避免对同一发言者进行两次计数。