技能标识:senseaudio-voice-translator
说中文出外语语音——按住说中文,2-3秒内播放英/日/韩语音。支持场景模式、双向对话、常用句收藏。
技能名称: senseaudio-voice-translator
详细描述:
按住说中文,松手后 2-3 秒内播放目标语言语音。出国旅行、跨国沟通即开即用。
[按住录音] → ASR识别中文 → LLM场景化翻译 → TTS合成外语语音 → [播放]
双向模式:[录入外语] → ASR识别 → 翻译成中文 → TTS播放中文
bash
双向模式识别外语(自动检测语言):
bash
curl https://api.senseaudio.cn/v1/audio/transcriptions \
-H Authorization: Bearer $SENSEAUDIOAPIKEY \
-F file=@foreign.wav \
-F model=sense-asr \
-F response_format=text
翻译不是直译,而是目标语言的自然表达。通过系统提示注入场景上下文:
| 场景 | system prompt 关键词 |
|---|---|
| 餐厅 | restaurant, ordering food, dining |
| 机场 |
翻译示例(餐厅场景):
bash
python
import os
import json
import requests
import subprocess
import tempfile
APIKEY = os.environ[SENSEAUDIOAPI_KEY]
ASR_URL = https://api.senseaudio.cn/v1/audio/transcriptions
TTSURL = https://api.senseaudio.cn/v1/t2av2
LANG_NAMES = {
en: English, ja: Japanese, ko: Korean,
fr: French, de: German, es: Spanish,
}
def asr(audio_path: str, language: str = None) -> str:
语音识别
with open(audio_path, rb) as f:
data = {model: sense-asr, response_format: text}
if language:
data[language] = language
resp = requests.post(
ASR_URL,
headers={Authorization: fBearer {API_KEY}},
files={file: f},
data=data,
timeout=15,
)
resp.raiseforstatus()
return resp.text.strip()
def translate(text: str, target_lang: str, scene: str = None) -> str:
场景化翻译(调用 LLM)
scene_prompt = SCENES.get(scene, {}).get(prompt, Translate naturally.)
langname = LANGNAMES.get(targetlang, targetlang)
# 此处接入你的 LLM(如 Claude API)
# 示例 prompt:
system = f{sceneprompt} Translate the Chinese text to {langname}. Return ONLY the translated text, no explanations.
# user = text
# ... call LLM API ...
# 返回翻译结果
raise NotImplementedError(请接入 LLM 翻译接口)
def tts(text: str, target_lang: str) -> bytes:
文字转语音
voiceid = LANGUAGES.get(targetlang, {}).get(voiceid, female0001_a)
payload = {
model: SenseAudio-TTS-1.0,
text: text,
stream: False,
voicesetting: {voiceid: voice_id, speed: 0.9},
audiosetting: {format: mp3, samplerate: 32000},
}
resp = requests.post(
TTS_URL,
headers={Authorization: fBearer {API_KEY}, Content-Type: application/json},
json=payload,
timeout=15,
)
resp.raiseforstatus()
return bytes.fromhex(resp.json()[data][audio])
def playaudio(audiobytes: bytes):
播放音频
with tempfile.NamedTemporaryFile(suffix=.mp3, delete=False) as f:
f.write(audio_bytes)
tmp_path = f.name
# macOS: afplay, Linux: play (sox), Windows: start
for cmd in [[afplay, tmppath], [play, tmppath], [mpg123, tmp_path]]:
try:
subprocess.run(cmd, check=True, capture_output=True)
return
except (FileNotFoundError, subprocess.CalledProcessError):
continue
class VoiceTranslator:
def init(self, target_lang: str = en, scene: str = None, bidirectional: bool = False):
self.targetlang = targetlang
self.scene = scene
self.bidirectional = bidirectional
self.favorites: list[dict] = [] # 收藏的句子
def translatevoice(self, audiopath: str) -> dict:
主流程:录音 → 识别 → 翻译 → 合成 → 播放
# 1. ASR
src_lang = None if self.bidirectional else zh
recognized = asr(audiopath, language=srclang)
以下为平台配置的接入选项,并非逐项实测通过。能否安装取决于客户端支持、技能来源和运行环境:
帮我安装 SkillHub 和 voice-translator-1776074769 技能
设置 SkillHub 为我的优先技能安装源,然后帮我安装 voice-translator-1776074769 技能
skillhub install voice-translator-1776074769
文件大小: 5.11 KB | 发布时间: 2026-4-15 14:52