Perl日記

PerlとかRubyとかPHPとかPythonとか

docomoの音声合成APIのAudio/L16のデータをaplayコマンドで再生する

docomo音声合成API【Powerd by エーアイ】を使って、返ってくるAudio/L16のデータをaplayコマンドで再生するメモ。


dev.smt.docomo.ne.jp

package main

import (
	"io"
	"net/http"
	"os"
	"strings"
	"time"
)

const APIKey = "XXX"

func main() {
	url := "https://api.apigw.smt.docomo.ne.jp/aiTalk/v1/textToSpeech?APIKEY=" + APIKey

	ssml := `<?xml version="1.0" encoding="utf-8" ?>
<speak version="1.1">
<voice name="nozomi">
のぞみです。おはようございます。
</voice>
<break time="1000ms" />
<voice name="seiji">
せいじです。こんにちは。
</voice>
</speak>`

	req, err := http.NewRequest("POST", url, strings.NewReader(ssml))
	if err != nil {
		panic(err)
	}
	req.Header.Add("Content-Type", "application/ssml+xml")
	req.Header.Add("Accept", "audio/L16")
	client := &http.Client{Timeout: time.Duration(10) * time.Second}
	res, err := client.Do(req)
	if err != nil {
		panic(err)
	}
	defer res.Body.Close()
	dst, err := os.Create("sound.raw")
	if err != nil {
		panic(err)
	}
	if _, err := io.Copy(dst, res.Body); err != nil {
		panic(err)
	}
}
$ aplay -t raw -r 16k -c 1 -f S16_BE sound.raw

aplayのヘルプを見つつ、こんな感じにしたら再生できた。


参考

blog.leko.jp

チケットタイトルアンチパターン

普段はBTS、JIRAとかRedmineとかのチケットでタスクを作っている。
その中で、いくつかチケットタイトルについて、アンチパターンを把握したので、メモ。

現状を書いただけで「だから何?」パターン

例)

  • 「ABC機能がX仕様に対応していない」
  • 「DEFアプリのY機能の矢印が動かない」
  • 「GをしたらZ機能ができない」


このパターンが一番多い
これらはすべて、「だから何?」と聞きたくなってしまう。
なんとなく、ニュアンスから類推することもできるのかもしれないが、それでも「じゃあ正解は何で何をすればいいのか」くらいは書いてほしい。
「対応していないのを対応させる」とか。

ログ貼り付けパターン

例)

  • 「Error: hoge feature: fuga abc def ghi jkl mno ...」
  • 「HogeException: AはBによってエラーになりました」


エラーログの内容をそのままとか、アラートで飛んできた件名とかを、そのままコピペで作ったパターン。
作ったときはいいものの、たとえば一週間後に見たときにすぐに内容が把握できるのかといえば、そんなことはない。
あと、当事者以外には触りたくない感じになる腫れ物チケットと化すことが多い。

エラーログは、チケットタイトルにちょっとはあってもいいけど、
全部をチケットタイトルにすると、結局何が失敗したのかわからない。
エラーログの内容はチケットの説明に書いて、チケットタイトルには何の失敗の対応をするのかを書こう。

漠然でふわふわ

例)

  • 「J画面の例のアレ」
  • 「今日のデータを取る」


もうちょっと頑張って書こうぜ。

【番外】ネタチケット

例)

  • 「もうすぐ到達するキリ番を取る」
  • 「↑のキリ番を取るのを防ぐ」


集計の邪魔になるので。

ミーティング中に漫画を読む

正確には、「全体ミーティングでたまに発生する雑談中にサンデーを読む」である。
いまの職場では、社内のエンジニア全員でのミーティングが週に一回行われている。
そのミーティングの時間内で、古くからの鉄板ネタとして、いじられキャラをいじる、という雑談に見せかけた何かが数分発生することがまれによくある。
まあ五分も十分もミーティングが中断するわけではないので、最初は「まあいいか」と思ってやり過ごしていたけど、さすがに最近は時間の無駄かなと思って手元のiPod touchを操作するようになってしまった。
そしてなんと水曜日は、十年以上惰性で読んでいる週刊少年サンデーの発売日なのである。
朝にiBooksで買ってDLしておけば、職場でインターネットにつながらなくても読むことができるのだ。
ミーティング中に漫画読む、っていうのは、さすがに後ろ暗い気持ちがないではないので、ちゃんとミーティングが再開されればすぐにiPodをスリープさせるくらいはしている、とここで言い訳もしておこう。
ちなみに最近始まった中で面白いのは「保安官エヴァンスの嘘」である。
ネタ切れに負けず頑張って欲しい。