Skip to content

Commit

Permalink
add azure speech service
Browse files Browse the repository at this point in the history
  • Loading branch information
jialeicui committed Apr 14, 2024
1 parent 262b330 commit 1be8e4c
Show file tree
Hide file tree
Showing 6 changed files with 45 additions and 11 deletions.
2 changes: 1 addition & 1 deletion src/server/app.py
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ async def message(body: MicoMessage) -> MessageResponse:
if text in ["开灯", "关灯", "停", "大点声", "小点声", "几点了"]:
return ignore_resp

if '后提醒我' in text:
if "后提醒我" in text:
return ignore_resp

# TODO support multiple sessions
Expand Down
9 changes: 3 additions & 6 deletions src/server/db/history_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,17 +17,14 @@ class MessageRole(enum.Enum):

class HistoryService(abc.ABC):
@abc.abstractmethod
def save(self, message: str, role: MessageRole, provider: str) -> None:
...
def save(self, message: str, role: MessageRole, provider: str) -> None: ...

@abc.abstractmethod
def get(self, limit: int = 10, offset: int = 0) -> list[History]:
...
def get(self, limit: int = 10, offset: int = 0) -> list[History]: ...


class HistorySvcDummy(HistoryService):
def save(self, message: str, role: MessageRole, provider: str) -> None:
...
def save(self, message: str, role: MessageRole, provider: str) -> None: ...

def get(self, limit: int = 10, offset: int = 0) -> list[History]:
return []
Expand Down
3 changes: 1 addition & 2 deletions src/server/llm/llm.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,7 @@ def new_session(self) -> None:
self.messages.append({"role": "system", "content": self.prompt})

@abstractmethod
def round(self, text: str, temperature: float) -> ChatCompletionMessage:
...
def round(self, text: str, temperature: float) -> ChatCompletionMessage: ...

def _save_message(self, message: str | None, role: MessageRole) -> None:
if message is None:
Expand Down
2 changes: 0 additions & 2 deletions src/server/requirements-dev.txt
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,3 @@ pytest-xdist
types-requests
types-peewee

-r requirements.txt

Empty file added src/server/tts/__init__.py
Empty file.
40 changes: 40 additions & 0 deletions src/server/tts/azure.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
import textwrap

import requests


class AzureTTS:
# https://learn.microsoft.com/en-us/azure/ai-services/speech-service/rest-text-to-speech?tabs=streaming
def __init__(
self, subscription_key: str, region: str, voice: str = "en-US-JessaNeural"
):
self.subscription_key = subscription_key
self.region = region
self.voice = voice
self.base_url = (
f"https://{self.region}.tts.speech.microsoft.com/cognitiveservices/v1"
)

def synthesize(self, text, filename):
# Synthesize the text to speech
url = self.base_url
headers = {
"Authorization": f"Bearer {self.get_token()}",
"Content-Type": "application/ssml+xml",
"X-Microsoft-OutputFormat": "riff-24khz-16bit-mono-pcm",
"User-Agent": "tts",
}
body = textwrap.dedent(
f"""\
<speak version='1.0' xmlns='http://www.w3.org/2001/10/synthesis' xml:lang='en-US'>
<voice name='{self.voice}'>
{text}
</voice>
</speak>"""
)
response = requests.post(url, headers=headers, data=body)
if response.status_code == 200:
with open(filename, "wb") as f:
f.write(response.content)
else:
print(f"Failed to synthesize speech: {response.text}")

0 comments on commit 1be8e4c

Please sign in to comment.