# 语音查询
您可以将短音频片段发送至 Typesense,并将其作为查询文本的基础。语音片段需要以 base64 编码数据的形式发送,Typesense 将通过预配置的语音查询模型对其进行转录。
# 配置语音查询模型
要使用语音查询功能,我们首先需要为集合关联一个语音查询模型:
{
"name": "products",
"fields": [
{"name": "name", "type": "string"}
],
"voice_query_model": {
"model_name": "ts/whisper/base.en"
}
}
# 使用语音查询进行多搜索
您的音频文件必须是 16 kHz 16 位 WAV 格式。在 base64 编码之前,您应该先将音频文件转换为该格式。
您可以使用以下脚本通过 ffmpeg
进行转换:
ffmpeg -i <your_file> -ar 16000 -ac 1 -c:a pcm_s16le voice_query.wav
然后通过 multi_search API 发送 base64 编码的音频数据。
TIP
由于 GET /documents/search
端点对查询文本长度有限制,您应该使用多搜索来处理语音查询。
{
"searches": [
{
"collection": "products",
"query_by": "name",
"voice_query": "<base64 encoded audio file>"
}
]
}
与文本嵌入模型类似,如果您为 Typesense 配置了 GPU 支持 或在 Typesense Cloud 上选择支持 GPU 的实例,Whisper 模型将在 GPU 上运行。
以下是一个简单的脚本,您可以使用 sox
从命令行录制 5 秒语音片段,进行 base64 编码,并通过 curl 请求发送到 Typesense:
VOICE_QUERY=$(sox -d -r 16000 -b 16 -c 1 -e signed-integer output.wav trim 0 5 && cat output.wav | base64)
curl 'http://localhost/multi_search' \
-X 'POST' \
-H "X-TYPESENSE-API-KEY: ${TYPESENSE_API_KEY}" \
--data-binary '
{
"searches": [
{
"collection": "products",
"query_by": "name",
"voice_query": "'${VOICE_QUERY}'"
}
]
}
'